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

mobile-sim-verification

iOS 시뮬레이터에서 실제 앱을 조작해 로컬 API와 릴레이를 사용하는 변경을 확인합니다. 연결 실패와 복구, 다국어와 글자 크기를 점검하고 스크린샷이나 녹화로 결과를 남깁니다.

원문원문 설명 보기

Verify apps/mobile behavior end-to-end on the iOS simulator against a local API and relay, with Maestro for input and a stand-in host instead of a second machine. Use when asked to verify, reproduce, screenshot, or edge-test a mobile change in the real app rather than in tests.

ParadevAI/Paradev스타 15,724(GitHub 15,724 + cccskills 0)

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • 모바일 앱 문제 재현
  • 연결 중단 및 복구 동작 확인
  • 다국어와 큰 글자 표시 점검
  • 실행 직후 짧은 화면 이상 녹화

한국어 소개

할 수 있는 일

mobile-sim-verification은 iOS 시뮬레이터에서 실제 앱을 조작해 변경 사항이 예상대로 동작하는지 확인합니다. 입력에는 Maestro를 사용하고, 로컬 API나 릴레이를 통해 앱의 상태를 바꿉니다. 두 번째 컴퓨터 대신 사용할 호스트도 준비할 수 있습니다. 스크린샷과 녹화로 확인 결과를 남깁니다.

이럴 때 유용합니다

모바일 화면 문제를 재현하거나 정상적인 온라인 상태 외의 동작을 확인할 때 유용합니다. 콜드 스타트, 서비스 중단과 복구, 백그라운드에서 돌아오기, 상태가 빠르게 바뀌는 상황, 긴 이름, 여러 언어, 가장 큰 글자 크기를 점검할 수 있습니다. 요청이 대기 중이거나 실패했을 때 화면이 이를 오프라인이나 빈 상태로 잘못 표시하지 않는지도 확인합니다. 시작 직후 잠깐 나타나는 화면 이상은 녹화로 조사할 수 있습니다.

사용 예시

  • “실제 앱 화면에서 호스트 목록 변경을 확인해 주세요.”
  • “릴레이가 중단되고 복구될 때 화면을 확인해 주세요.”
  • “시작할 때 잠깐 나타나는 화면 이상을 녹화해 조사해 주세요.”

주의 사항

대상 프로젝트의 로컬 서비스와 개발용 앱이 필요합니다. Mac에서는 Xcode와 simctl을 사용합니다. Mac이 없는 환경에는 EAS 절차가 있지만 실행 중 비용이 발생합니다. 확인을 마치면 테스트 데이터와 화면 설정을 원래대로 복구해야 합니다.

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

문서 점검

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

안전성전송·삭제·명령 실행 등을 명시하고 있는가
B일부 부족테스트 데이터를 쓰고 인증 정보를 변경하며 프로세스를 종료합니다. 일부 작업에만 복구 지침이 있습니다.
도입의 용이성필요한 도구나 API 키가 적고 적혀 있는가
C확인 필요로컬 서비스, 개발용 앱, 플랫폼 도구가 필요하지만 전제 조건 설명이 일부에 그칩니다.

점수에는 넣지 않았습니다. 2026년 10월 29일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.

평가가 다르다고 생각되면 재검토를 요청하기

어느 항목이 왜 다르다고 생각하는지 적어 주세요. 로그인은 필요 없습니다. SKILL.md와 대조해 평가를 다시 만들고 이곳에 반영합니다.

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

포함된 파일(1)

  • SKILL.md7.4 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Mobile Simulator Verification

The mobile counterpart to cdp-verification. There is no CDP on a phone: input goes through Maestro, evidence comes from simctl screenshots and recordings, and state comes from the real local API and relay. "Rules" is what counts as valid evidence. "Mechanics" is how to get there. apps/mobile/scripts/e2e/host-states.sh is a working example.

Rules

  1. Use the real screen. Sign in and reach the screen the way a user does. A temporary preview route that mounts one component with fixed props is diagnostic support, and must be reported as such. It hides the header, the data hooks, loading states and navigation.

  2. Drive state through real services. Change what the app sees by changing the local API or relay (register a host, open or close its socket), not by seeding the query cache.

  3. Run the edge pass before reporting "tested". The main path is not the test. At minimum: cold start, a dependency down (relay or API stopped), recovery when it returns, app backgrounded and resumed, rapid state flapping, a very long name, one long-string locale (German) and one CJK locale, and the largest text size. Say which you ran and which you did not.

  4. Never show "unknown" as a negative. A query that is pending or failed has not said "offline", "empty" or "none". Check what the screen paints in both states; this is the most common mobile bug found by this process.

  5. Catch flashes with a recording. A screenshot taken after a sleep cannot show a state that lasts half a second. Record the launch and diff the frames.

  6. Attribute failures correctly. Before reporting that a check is red on main, confirm it in CI. A fresh worktree's mobile typecheck shows errors in unrelated packages that CI does not.

Mechanics

Services

Start each in a Paradev terminal so it outlives the tool call. --local is required; without it the command returns nothing.

superset terminals create --local --workspace "$SUPERSET_WORKSPACE_ID" --command "<cmd>"
  • API: cd apps/api && bun run dev. A 500 with password authentication failed means this worktree's Neon branch was deleted by the daily cleanup. Recreate it as .superset/lib/setup/steps.sh does and rewrite the three lines under # Workspace Database in .env.
  • Relay: run it in a loop. wrangler dev exits with an empty ✘ [ERROR] when a client aborts a request, which every app relaunch does. Durable Object state survives the restart.
    cd apps/relay && while true; do CI=1 WRANGLER_SEND_METRICS=false node_modules/.bin/wrangler dev \
      --port "$RELAY_PORT" --var NEXT_PUBLIC_API_URL:http://localhost:$API_PORT --local; sleep 1; done
    
  • Realtime: bun dev:realtime. It runs the Worker on this worktree's REALTIME_PORT and restarts it when it exits. Without it, the app falls back to polling and nudges go nowhere.
  • Metro: cd apps/mobile && CI=1 bunx expo start --dev-client --port 8081. CI=1 turns off file watching, so restart Metro after editing code. The first bundle after a dependency change takes minutes and the dev client gives up waiting: warm it first by fetching launchAsset.url from curl -H 'expo-platform: ios' localhost:8081.

App

  • A dev-client build must be installed on the simulator. Reuse one from DerivedData only if native dependencies have not changed since; otherwise bunx expo prebuild -p ios, then xcodebuild -workspace ios/Superset.xcworkspace -scheme Superset -configuration Debug -sdk iphonesimulator -derivedDataPath <scratch> and xcrun simctl install. JavaScript-only changes need no rebuild. ios/ is gitignored.
  • Silence the first-run developer menu: xcrun simctl spawn booted defaults write sh.superset.mobile EXDevMenuIsOnboardingFinished -bool YES.
  • Sign in: maestro test apps/mobile/.maestro/flows/sign-in.yml (JAVA_HOME=/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home).
  • The dev account has no plan, so Home shows the paywall. Give its org a temporary one on this worktree's Neon branch, and delete the row afterwards. Confirm DATABASE_URL_UNPOOLED is the workspace branch first.
    insert into subscriptions (id, plan, reference_id, status, stripe_subscription_id, period_start, period_end, seats)
    values (gen_random_uuid(), 'pro', '<org id>', 'active', 'sub_temp_mobile_e2e', now(), now() + interval '2 days', 1);
    

Hosts without a second machine

apps/mobile/scripts/e2e/stand-in-host.ts registers a host through host.ensure, holds the relay control socket open to make it online, reads its presence, and deletes it through host.delete. It refuses to run against a non-local API. While online it receives the app's stream:dial tickets and answers none, so lists behind that host keep loading.

Evidence

xcrun simctl status_bar booted override --time "9:41" --batteryState charged --batteryLevel 100
xcrun simctl io booted screenshot shot.png
xcrun simctl io booted recordVideo --codec h264 launch.mov   # stop with SIGINT
ffmpeg -i launch.mov -vf fps=10 frames/f%03d.png
xcrun simctl spawn booted defaults write "Apple Global Domain" AppleLanguages -array de-DE   # then relaunch
xcrun simctl ui booted content_size extra-extra-extra-large

Count requests in the relay log to prove polling behavior (for example none while backgrounded). Reset the locale, text size and status bar, stop the services, and delete test hosts and the temporary plan when done.

EAS: no Mac (Linux, a cloud workspace)

apps/mobile/scripts/eas-dev.sh runs the dev client on an EAS cloud simulator; see .agents/skills/mobile-eas-dev/SKILL.md. The xcrun simctl steps above become agent-device commands, and the simulator reaches this box only through local egress.

  • App. The script installs the simulator build that matches this checkout's fingerprint and builds one only after a native change.
  • Ports. It forwards Metro, the API, the relay and realtime. A port that is not forwarded fails as a network error in the app; without the relay running, Home says it cannot check the host.
  • Input. agent-device snapshot -i, press, fill, screenshot. press and fill take --settle and print what changed. The dev-menu sheet covers the first screen: press Continue, then Close.
  • Request counts. /tmp/superset-eas-egress.log names each local port the simulator reached.
  • Cloud screens. The workspace's Neon branch is a copy of production, and cloud access is a PostHog flag on the email, so the dev account sees no cloud workspaces. Prefer a test account that has the flag. Use a real account only with its owner's approval: save its auth.accounts credential password, set a temporary hash (hashPassword from better-auth/crypto), and sign in with "Sign in with email (dev)". After the test, restore the hash and delete the sessions the test created.
  • Cleanup. eas simulator:stop from apps/mobile; the session bills while it runs and stops by itself after 15 idle minutes. Stop local processes by PID: pkill -f <pattern> also matches the shell that runs it.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

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

같은 저장소의 스킬

10x

무료요약 있음

Superset 사용 현황을 살펴보고 아직 쓰지 않는 기능 중 업무 방식에 맞는 항목을 제안합니다. 각 기능을 설명하고, 사용자가 고른 예약 실행 에이전트나 병렬 작업 공간, 공유 작업 등을 설정합니다.

  • 사용하지 않는 Superset 기능 찾기
  • 에이전트 예약 실행 설정
  • 여러 작업 공간에서 병렬 작업
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

automate

무료요약 있음

반복 작업을 Superset 자동화로 설정합니다. 에이전트 지침, 일정 또는 이벤트 조건, 실행 작업 공간을 정리하고 명시적인 확인을 받은 뒤 자동화를 만듭니다. 저장된 조건과 첫 실행 결과를 살펴 지침을 조정합니다.

  • 매일 또는 매주 작업 예약
  • GitHub에서 풀 리퀘스트가 열릴 때 실행
  • Slack의 지정된 반응을 계기로 실행
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

browser

무료요약 있음

Superset 작업 공간의 브라우저에서 페이지를 열고 클릭하거나 입력하며, 화면과 콘솔 정보를 확인합니다. 개발 중인 웹 앱 미리 보기, 폼 동작 및 화면 이동 점검에 활용할 수 있습니다.

  • 로컬 웹 앱 미리 보기
  • 페이지 화면 캡처
  • 콘솔 오류 확인
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

build-a-stripe-integration

무료요약 있음

Stripe 공식 문서와 API 매개변수 정의를 확인해 결제, 구독, 청구서, 웹훅 연동을 구현합니다. 적절한 제품 선택부터 샌드박스 테스트와 웹훅 처리까지 다루며, 결제와 구독 상태를 웹훅 이벤트로 판단합니다.

  • 정기 결제에 맞는 Stripe 제품 선택
  • Checkout 또는 청구서 처리 구현
  • 오작동하는 Stripe 연동 조사
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

cdp-verification

무료요약 있음

Chrome DevTools Protocol로 실행 중인 Electron 데스크톱 앱을 조작해 UI 변경을 확인하고 문제를 재현합니다. 실제 사용 흐름을 따라 화면 전환을 검증하고, 스크린샷과 경로·스크롤 위치·포커스·저장 상태를 기록해 비교합니다.

  • 실행 중인 앱에서 UI 문제 재현
  • 수정 후 화면 동작 확인
  • 화면 전환이 포함된 흐름 검증
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

ci-triage

무료요약 있음

GitHub Actions 실패 로그에서 최초 오류를 찾아 코드 결함, 환경 문제, 간헐적 실패, 기존 장애로 구분합니다. 기준 브랜치와 PR 변경 사항을 비교해 관련성을 설명하고 다음 조치를 정리합니다.

  • PR 검사 실패 원인 조사
  • 불안정한 테스트와 코드 결함 구분
  • 기준 브랜치의 기존 장애 확인
ParadevAI/Paradev1.6만2026년 10월 29일 업데이트

ParadevAI의 스킬 모두 보기

이 스킬의 문제 신고