본문으로 건너뛰기
cccskills
무료GitHub에 공개한국어 소개

dry-run-a-risky-change

병합이나 배포 전에 읽기 전용으로 과금, 권한, 데이터 변경이 운영 조직에 미치는 영향을 확인합니다. 영향을 받는 화면을 미리 살펴보고, 앞선 점검으로 판단하기 어려운 경우에만 승인 후 PlanetScale 운영 데이터 복사본으로 검증합니다.

원문원문 설명 보기

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,316(GitHub 24,316 + cccskills 0)
연동 도구StripeGitHub

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • 과금 변경의 영향을 받는 운영 조직 확인
  • 대표 데이터로 권한 변경 화면 미리 보기
  • 배포 전 데이터 이전 검증
  • 운영 데이터 복사본으로 동작 확인

한국어 소개

할 수 있는 일

이 스킬은 과금, 요금제, 좌석 수, 권한, 인증, 기능 플래그, 데이터 이전처럼 조직의 이용 조건에 영향을 주는 변경을 배포 전에 검증합니다. 먼저 운영 데이터를 변경하지 않고 현재 규칙과 변경 후 규칙을 비교해 접근 권한이나 요금이 달라지는 조직을 찾습니다. 화면 변경이 있다면 대표적인 테스트 데이터로 실제 화면을 확인합니다. 앞선 확인만으로 답을 얻을 수 없는 경우에 한해 승인을 받은 뒤 PlanetScale의 운영 데이터 복사본을 읽기 전용으로 점검합니다.

이럴 때 유용합니다

조직이 서비스를 이용하지 못하게 되거나 요금이 달라질 수 있는 변경을 병합하거나 배포하기 전에 사용합니다. 실제 영향 범위를 파악하고 필요한 운영 작업, 배포 순서, 롤백 방법을 정리하는 데 도움이 됩니다.

사용 예시

  • “이 요금제 변경의 영향을 받는 운영 조직을 읽기 전용으로 확인해 주세요.”
  • “대표적인 조직 데이터로 권한 변경 화면을 확인해 주세요.”
  • “일반적인 확인으로 판단하기 어려우니 운영 데이터 복사본에서 검증할 절차를 준비해 주세요.”

주의 사항

운영 데이터 조회에는 플랫폼 관리 MCP를 사용합니다. PlanetScale 복사본 검증에는 승인, 전용 워크플로, 보호된 환경에 저장된 토큰이 필요합니다. 복사본이 유지되는 동안 운영 브랜치에 준하는 비용이 발생합니다. 채팅, 공개 로그, 이미지에 기밀 정보를 포함하지 않아야 합니다.

이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.

문서 점검

AI가 SKILL.md의 내용에서 주의가 필요한 작업과 도입 전제를 확인했습니다. 점수는 실제로 실행한 결과(실행 검증)만으로 매깁니다.

안전성전송·삭제·명령 실행 등을 명시하고 있는가
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 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

add-a-feature

무료요약 있음

OpenWork 기능 플래그를 코딩 전에 등록하고 조직 및 배포 환경별로 단계적으로 공개하며, 문제가 생기면 전체 배포에서 중단하고 공개 완료 후 임시 플래그를 제거합니다. 코드 검사와 진행 중인 작업, 저장 데이터, 기록을 중단 시 어떻게 처리할지도 다룹니다.

  • 구현 전에 새 기능 등록
  • 지정한 조직부터 단계적으로 공개
  • 클라우드와 자체 호스팅 범위 분리
different-ai/openwork2.4만2026년 10월 30일 업데이트

browser-automation

무료요약 있음

OpenCode 브라우저 도구를 로컬에서 실행 중인 OpenWork Electron 앱에 연결해 화면을 살펴보고, 작업을 입력해 전송한 뒤 응답을 확인합니다. CDP를 이용한 탐색과 디버깅을 지원합니다.

  • 로컬 Electron 앱에 연결
  • 디버깅 중 화면 상태 확인
  • 입력창에서 작업 전송
different-ai/openwork2.4만2026년 10월 30일 업데이트

confidentiality-review

무료요약 있음

변경 사항의 추가된 줄에서 고객, 잠재 고객, 협력사 또는 외부 개인을 식별할 수 있는 정보를 확인합니다. 내용을 되풀이하지 않고 위치와 최소 수정 방안을 보고하며, 이미 공개된 정보는 상위 대응으로 넘깁니다.

  • 고객이나 협력사 식별 정보를 확인할 때
  • 문서와 테스트 데이터의 신원 정보를 검토할 때
  • 내용을 되풀이하지 않고 노출 위치를 보고할 때
different-ai/openwork2.4만2026년 10월 30일 업데이트

connect-openwork-mcp

무료요약 있음

Claude Code와 Codex 같은 AI 클라이언트를 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의 스킬 모두 보기

이 스킬의 문제 신고