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

dry-run-a-risky-change

課金や権限などの変更が本番組織に与える影響を読み取り専用で調べ、画面確認や承認済みの実データ検証まで段階的に進めるスキルです。

原文原文の説明を見る

Billing, plans, seats, permissions, access rules, auth, flag removals or data migrations that could lock real organizations out or change what they pay. Use before merging or deploying such a change to see exactly which production organizations it affects, prove the UI on production-shaped data, and only with explicit approval test against a PlanetScale copy of real data.

different-ai/openworkスター 24,317(GitHub 24,317 + cccskills 0)
連携ツールStripeGitHub

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • 課金変更の影響組織を調べたいとき
  • 権限変更を代表データで画面確認
  • データ移行をデプロイ前に検証
  • 本番データコピーで確認したいとき

日本語での紹介

できること

課金、プラン、席数、権限、認証、機能フラグの削除、データ移行など、組織の利用条件に影響する変更を出荷する前に検証します。まず本番データを変更せず、現在と変更後のルールを比較して影響を受ける組織を特定します。画面変更がある場合は、代表的な形のテストデータで実際の画面を確認します。それでも判断できない場合に限り、承認を得てPlanetScale上の本番データコピーで読み取り専用の確認を行います。

こんなときに便利

変更によって利用できなくなる組織や課金額が変わる組織を、マージやデプロイ前に把握したいときに向いています。テストだけでは分からない実際の影響範囲を確認し、運用上の事前作業やデプロイ順序、ロールバック方法まで整理する際にも使えます。

使い方の例

  • 「このプラン変更で影響を受ける本番組織を読み取り専用で調べて」
  • 「権限変更の影響を代表的な組織データで画面確認して」
  • 「通常の確認で判断できないので、本番データコピーで検証する手順を準備して」

注意点

本番データの読み取りにはプラットフォーム管理MCPを使います。PlanetScaleコピーでの検証は承認が必要で、専用ワークフローと保護された環境のトークンを使います。コピーの利用には本番ブランチ相当の費用が発生し、機密情報をチャットや公開ログ、画像に含めない運用が求められます。

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

資料チェック

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

安全面送信・削除・コマンド実行などの扱いが明示されているか
A良好読み取り専用を指定し、書き込み禁止、承認、保護環境、削除確認、機密情報の扱いを明記しています。
導入のしやすさ必要なツールや API キーが少ないか、書かれているか
B一部不足通常確認では管理MCP、最終段階ではPlanetScaleトークンやGitHub Actions環境が必要と記載されています。

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

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

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

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

含まれるファイル(1)

  • SKILL.md7.3 KB

SKILL.md(原文)

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

Dry-run a risky change

Tests prove the rule you wrote. They do not tell you which real organizations the rule changes. Before a risky change ships, answer three questions in order and stop at the first level that answers them:

  1. Who changes? Every production organization whose outcome differs before vs after (blocked, unblocked, billed differently, loses access).
  2. Does it look right to them? The real screens on organizations shaped like the affected ones.
  3. Does it behave right on real data? Only when 1 and 2 cannot answer it.

Confidentiality (AGENTS.md, hard rule): production names, ids, emails and counts stay in chat. Never put them in a branch, commit, fixture, screenshot, PR or issue. Describe affected organizations generically ("one grandfathered org with ~30 SSO users").

Level 1: read-only production dry run (always)

Run the new rule against production inputs without writing anything.

  1. Write the new rule's inputs as the smallest set of columns (plan metadata, member counts, subscription status, feature overrides). Express the rule either as SQL or by feeding query results into the PR's pure function.
  2. Read them with the platform admin MCP den_query (read-only SQL against the Den database). Never use admin write tools (den_update_org_plan, den_set_org_capability, den_set_feature_rollout) during a dry run.
  3. Compute before (current dev rule) and after (the PR) for every organization the rule can touch, and report only the ones that differ, plus anyone at or near a new limit.
  4. Put the query (no results) in the PR as the pre-deploy check, and list the ops steps it implies (for example "give one org enough seats first").

den_query traps that produced wrong answers before:

  • JSON values compare as text: GREATEST(5, JSON_EXTRACT(m,'$.limits.members')) says '40' < '5'. Always CAST(JSON_UNQUOTE(JSON_EXTRACT(...)) AS UNSIGNED).
  • It refuses credential tables (invitation, session, account, keys and tokens) and any statement containing a write keyword as a word, including inside string literals ('%grant%', 'invitation.create.attempted'). Use LIKE 'invitation.%.attempted', or count placeholder member rows (joined_at IS NULL) instead of reading invitations.
  • It stops at 14 seconds. Filter audit_event by org_id and a created_at range; never scan it whole.
  • Feature state lives in feature_rollout and organization_feature, not organization.metadata.capabilities (a legacy copy).

Level 2: production-shaped preview (UI changes)

Reproduce each affected shape with generic data and drive the real screens.

  1. From Level 1, list the distinct shapes (for example: Enterprise trial with an end date, full admin-set plan, paid in Stripe, old grant over its limit, Free at its limit).
  2. Seed them in an evals world (evals/worlds/*.ts, generic names such as "Acme") and prove the journeys in a proof (write-a-spec). Use the fake Stripe lab (evals/worlds/fake-stripe.ts) when billing must be configured, or limits that depend on Stripe being set up switch off.
  3. Run headless: pnpm evals:e2e <name> --local, or boot a preview with preview-my-work (preview-den / preview-full, locally or on Daytona) and click through by hand. Attach screenshots to the PR (upload-photo).

Level 3: PlanetScale copy of real data (exceptional, needs approval)

Use only when Levels 1 and 2 cannot answer the question (data-dependent migrations, performance on real volume). Ask the person first and name the cost and the data involved.

Use the Dry run on a copy of production data workflow (.github/workflows/prod-data-dry-run.yml). It seeds an isolated dry-run-<run-id>-<attempt> copy from the latest production backup (Data Branching), runs one read-only check, and attempts deletion when the job ends, including on failure or cancel. Verify absence after the run; cleanup can fail. Both --restore and --seed-data can create a branch classified as production. The token therefore needs read-only production connection and production-branch deletion permissions. The real source must be deletion-protected, and the job verifies that protection before creation, credentials and cleanup. The token cannot change branch protection or write production data. The PlanetScale MCP has no branch-creation tools.

  1. Write the check in ee/apps/den-api/scripts/dry-run/<name>.ts on your branch, using connect.ts (dryRunDb, report, fail, finish). It may import the PR's own code (for example a pure rule) and must print aggregates and pass/fail only: this repository is public, so the job log and summary are public. Start from smoke.ts.
  2. Push the branch, then run the workflow from GitHub Actions (or gh workflow run prod-data-dry-run.yml --ref <branch> -f check=<name>.ts). Database access is always read-only. This workflow cannot apply migrations.
  3. A required reviewer approves the run on the prod-data-dry-run environment after reading the check. Approve only checks that print aggregates.
  4. Read the summary. If a run is interrupted, run it again with cleanup_only to delete leftover dry-run-* branches.

What the workflow needs (set once, by a person, never pasted in chat): on the prod-data-dry-run environment, a PlanetScale service token limited to the Den database with read_database, read_branch, create_branch, delete_branch, connect_branch, read_backups, restore_production_branch_backup, connect_production_read_only_branch and delete_production_branch (never connect_production_branch or write_database). The real source must be deletion-protected first. These scopes also allow read-only credentials on the live source and deleting other unprotected production branches in this database; run-name guards limit the workflow, not the underlying token. Store it only in the protected environment as PLANETSCALE_DRY_RUN_TOKEN_ID / PLANETSCALE_DRY_RUN_TOKEN, the PlanetScale organization and database names as variables PLANETSCALE_DRY_RUN_ORG and PLANETSCALE_DRY_RUN_DATABASE, and a restored branch costs as much as the production branch while it exists.

Guards the workflow already applies: manual runs only, a required reviewer, no secrets besides the branch connection (no email, Stripe, Slack, connector or model credentials), masked credentials, one run at a time, a 90 minute timeout, and branch deletion in an always() step. Never copy rows out of the branch, never screenshot it, and never point a full Den deployment with real integrations at it.

Before merge and deploy

  • The PR states the rule, the Level 1 query, the ops steps that must happen first, and the deploy order when more than one service changes.
  • Do the ops steps with the person's numbers, re-run the Level 1 query, and confirm nobody is newly blocked before deploying.
  • Know the rollback: revert the PR, or, if the change is behind a feature, the kill switch in /admin (add-a-feature).

レビュー

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

コメント

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

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

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

0 / 1000 文字

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

同じリポジトリのスキル

add-a-feature

無料概要あり

OpenWorkの新機能を無効状態で登録し、組織別・提供環境別の段階公開から全体停止、公開完了後のフラグ削除まで、一貫した仕組みで管理するスキル。

  • 実装前に新機能を登録したいとき
  • 特定の組織から段階公開したいとき
  • cloudとself_hostedの提供範囲を分離
different-ai/openwork2.4万2026年10月30日 更新

browser-automation

無料概要あり

ローカル開発中のOpenWorkのElectronアプリに接続し、画面の状態確認や入力・タスク送信を自動化します。応答を画面で確かめながら、挙動の調査やデバッグを進めるためのスキルです。

  • ローカルのElectronアプリへ接続
  • デバッグ中に画面の状態を確認
  • 入力欄からタスクを送信したいとき
different-ai/openwork2.4万2026年10月30日 更新

confidentiality-review

無料概要あり

変更差分の追加行から、顧客・見込み客・取引先・外部の個人を特定する情報を確認。情報そのものを再掲せず、該当箇所と最小限の修正方針を報告します。

  • 顧客や取引先の識別情報を確認したいとき
  • 文書やテストデータの識別情報の確認
  • 情報を再掲せずに漏えい箇所を報告
different-ai/openwork2.4万2026年10月30日 更新

connect-openwork-mcp

無料概要あり

Claude CodeやCodexなどをOpenWork MCP Gatewayに接続し、組織のスキル・プラグイン・外部接続を使うための設定と認証、接続確認を進めます。

  • AIクライアントと組織リソースの接続
  • MCPの認証と利用可能ツールの確認
  • 接続組織の切り替えや認証エラー対応
different-ai/openwork2.4万2026年10月30日 更新

contributor-screen

無料概要あり

外部協力者のプルリクエストを実行前に調べ、難読化や隠れた通信、不審な依存関係などを確認。通常の差分レビューでは見落としやすい挙動を指摘します。

  • 外部からの変更を実行前に確認したいとき
  • 難読化コードや不明な通信の確認
  • 依存関係とインストール処理の確認
different-ai/openwork2.4万2026年10月30日 更新

create-plugin

無料概要あり

OpenWorkで使うOpenCodeプラグインのひな形を作成し、独自ツールの定義や処理を呼び出すフック、設定ファイルへの追加まで整えるスキル。

  • OpenWorkに独自ツールを追加したいとき
  • メモの保存・一覧表示機能の作成
  • ツール実行前後の処理追加
different-ai/openwork2.4万2026年10月30日 更新

different-ai のスキルをすべて見る

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