本文へ移動
cccskills
無料GitHub で公開日本語紹介

trpc-compat

tRPCの変更で配布済みアプリが壊れないよう、リリース履歴と利用状況から互換性を確認します。変更方法の選択、廃止する機能の削除判断、障害時の復旧手順も扱います。

原文原文の説明を見る

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.

ParadevAI/Paradevスター 15,724(GitHub 15,724 + cccskills 0)
連携ツールSentry

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • 配布済みアプリへの影響を確認したいとき
  • 互換性を保って入出力を変えたいとき
  • 廃止予定の処理を削除したいとき
  • API更新による障害から復旧したいとき

日本語での紹介

できること

tRPCで公開している処理や入出力を変える前に、配布済みアプリとの互換性を確認するスキルです。最新コードだけでなく、リリースタグや変更履歴から利用箇所を探し、PostHogの呼び出し記録と合わせて判断します。新しい処理の追加、任意入力の追加、旧名の維持など、変更内容に応じた方法を示します。

こんなときに便利

packages/trpcやpackages/host-serviceの変更、関連PRのレビュー、古いアプリだけで発生する障害の調査に向いています。廃止予定の処理を削除する根拠や、APIとアプリを公開する順序も整理できます。

使い方の例

  • 「この戻り値の変更が配布済みアプリに影響するか確認して」
  • 「この廃止予定の処理を削除できるか調べて」
  • 「API公開後に古いアプリが壊れたので復旧方法を検討して」

注意点

記載されたリリースタグ、最低対応バージョン、監視イベントを持つコードベースが前提です。利用状況の確認にはPostHogを使い、障害調査にはSentryを参照します。呼び出し記録は1%の抽出なので、記録がないだけでは未使用と判断できません。最低対応バージョンの引き上げは製品上の判断が必要です。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

資料チェック

SKILL.md の記述から、注意が要る操作と導入の前提を AI が確認しました。点数は実際に動かした結果(実行検証)だけで付けています。

安全面送信・削除・コマンド実行などの扱いが明示されているか
B一部不足git fetchやgh runなどを使い、PostHog記録は1%抽出と明記されるが、実行や変更の確認範囲に限りがある。
導入のしやすさ必要なツールや API キーが少ないか、書かれているか
B一部不足リリースタグや最低対応版、PostHog・Sentryが前提だが、接続設定手順はない。

点数には入れていません。 2026年10月29日 時点で AI(OpenAI Codex)が判定しました。目安なので、入れる前に原文も確認してください。

評価が違うと思ったら、見直しを依頼する

どの項目が、なぜ違うと思うかを書いてください。ログインは不要です。内容を SKILL.md と照らし合わせて評価を作り直し、この欄に反映します。

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

含まれるファイル(1)

  • SKILL.md6.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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_VERSION is 1.0.0. If apps/mobile on main calls it, or git log -S shows it ever did, treat it as called by a live build.
  • SDK: packages/sdk calls procedures by string (/api/trpc/<procedure>). Search main and git log -S the 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:

SELECT properties.client_product AS product, properties.client_version AS version,
       count() * 100 AS est_calls, max(timestamp) AS last_seen
FROM events
WHERE event = 'api_procedure_called' AND properties.procedure = 'page.list'
  AND timestamp > now() - INTERVAL 30 DAY
GROUP BY product, version ORDER BY product, version

Zero rows is weak evidence for a rarely called procedure: 1% of a small number rounds to zero. Calls from web and from builds older than the x-superset-client header are not recorded.

3. Pick the pattern

You want toDo thisExample
Change an output shapeNew procedure; old one keeps its shapepage.list + page.listPaginated (#7756)
Add an inputNew optional field, default in the handler (safe: old clients do not send it)
Accept a new input shapeAccept both, convert server-siderrule + triggers in automation/schema.ts
Rename a procedureNew name; old name stays as a @deprecated aliastask.all → task.list in task/task.ts
Drop an inputKeep accepting it and ignore itbranch in task/schema.ts
Drop an output fieldKeep sending it until removal is allowedthe plugins catalog field that #7317 removed crashed old desktops
Drop or rename a DB columnPick the procedure's output columns first, keep the old fielddb.query.*.find* without columns returns every column
Make an input stricterOnly on a new input or procedurepublishPageSchema is .strict() from the start, so a newer CLI fails loudly on an older server
Change an error code, default, or sort orderNew procedure, or a new optional input that opts in (absent keeps the old behavior)desktop branches on NOT_FOUND and CONFLICT
Call a new procedure from a clientMerge the API first, then the client after the API is live#7317's API deploy stalled two days behind migration 0119

To check the API is live, the latest Deploy Production run after your API merge must have passed: gh run list --workflow deploy-production.yml --branch main --limit 5.

In client code, expect the unknown: guard new optional fields, handle enum values the client has not seen, and keep a failing widget from taking its parent view down with it. #7726 crashed the whole workspace view from one menu.

Keep the schema migration in its own PR. #7726 had a migration inside it, so the bad API change could not be reverted.

4. Remove a deprecated procedure or field

Only when both are true:

  • Step 1 finds no call in a live desktop tag and no call from mobile, CLI, or SDK.
  • Step 2 shows no calls from a live version over the last 30 days.

If a live desktop build still calls it, the only path is to raise MINIMUM_DESKTOP_VERSION. That is a product decision; ask, do not do it in a cleanup PR. Put the evidence in the PR description, as d1aee0922f did for device.heartbeat.

5. If released clients are already broken

  1. Confirm with Sentry: a new desktop issue that starts at the API deploy time.
  2. Does the PR that broke it include a migration that production already applied?
    • No: revert the PR. The API redeploys on merge.
    • Yes: write a forward fix that restores the old contract and moves the new shape to a new procedure, as #7756 did. Do not roll back the migration.
  3. Tell affected users to reload (Cmd+R). Some needed to restart the app or the terminal daemon.

Checklist

  • Step 1 run for every procedure whose input or output changed, with the result in the PR
  • No existing input field is new-required, renamed, retyped, or more strictly validated
  • No existing output field is removed, renamed, retyped, wrapped, or newly nullable, including through a DB column change on a find* without columns
  • No change to an existing error code, default limit, sort order, or meaning of null
  • No change to a procedure's type (query, mutation, subscription), the link, or the transformer
  • No new required header or stricter auth on an existing procedure
  • Client code that needs a new procedure merges after the API is live in production
  • Every new input field is optional with a server-side default
  • A replaced procedure is kept as a @deprecated alias
  • No schema migration in the same PR as the contract change
  • Removals: step 1 and step 2 evidence is in the PR

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

10x

無料概要あり

Supersetの利用状況を調べ、まだ使っていない機能と活用方法を提案します。定期実行や並列作業、タスク管理などを一つずつ説明し、選んだ機能を実際に設定します。

  • 未使用のSuperset機能を知りたいとき
  • エージェントの定期実行を設定したいとき
  • 別ワークスペースで並列作業したいとき
ParadevAI/Paradev1.6万2026年10月29日 更新

automate

無料概要あり

繰り返し作業をSupersetで自動化するために、エージェントへの指示と実行時刻・イベント条件を整え、承認後の作成から初回実行の確認まで進めるスキル。

  • 日次・週次の作業を定期実行
  • GitHubのPR作成をきっかけに実行
  • Slackの指定リアクションで実行
ParadevAI/Paradev1.6万2026年10月29日 更新

browser

無料概要あり

Superset内のブラウザでページ閲覧・クリック・入力を行い、画面やコンソールを確認します。開発中のWebアプリの動作確認やフォーム操作を支援します。

  • ローカルのWebアプリを確認したいとき
  • ページのスクリーンショット撮影
  • コンソールエラーの確認
ParadevAI/Paradev1.6万2026年10月29日 更新

build-a-stripe-integration

無料概要あり

Stripeの決済・定期課金・請求書連携を、公式資料とAPIの引数定義を確認しながら実装します。製品選びからテスト環境での検証、Webhook処理の設計まで扱います。

  • 決済や定期課金の製品を選びたいとき
  • Checkoutや請求書処理を実装したいとき
  • 動作が不正なStripe連携を調べたいとき
ParadevAI/Paradev1.6万2026年10月29日 更新

cdp-verification

無料概要あり

実際に起動しているデスクトップアプリをChrome DevTools Protocolで操作し、画面遷移や状態を記録しながらUI変更や不具合を確認します。

  • UIの不具合を実アプリで再現したいとき
  • 修正後の画面動作を確認したいとき
  • 画面遷移を含めて検証したいとき
ParadevAI/Paradev1.6万2026年10月29日 更新

ci-triage

無料概要あり

GitHub Actionsの失敗ログから最初の原因を探し、コードの不具合・環境要因・断続的な失敗・既存障害を切り分け、PRとの関係と次の対応を整理します。

  • PRのチェック失敗を調べたいとき
  • 不安定なテストと不具合の切り分け
  • 比較元ブランチの既存障害の確認
ParadevAI/Paradev1.6万2026年10月29日 更新

ParadevAI のスキルをすべて見る

このスキルの問題を報告する