소스 정보
- 저장소
- EvanBacon/apple-health
- 최근 소스 활동
- 2026년 1월 4일 19:07
- 감지된 SKILL.md 언어
- 영어
- 스타
- 38
- 포크
- 3
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/EvanBacon/apple-health --skill device-testing명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Building great Expo native modules for iOS and Android. Views, APIs, Marshalling, Shared Objects, Expo Documentation, Verifying Expo modules.
Seed and verify HealthKit data in running Expo apps using the apple-health CLI
Building Expo DevTools Plugins with CLI Interfaces for interacting with running Expo apps using agents.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | device-testing |
| description | Interact with iOS simulators and verify app behavior using xcobra |
Use bunx xcobra to interact with iOS simulators and debug Expo apps.
Get the accessibility tree to understand current screen state:
bunx xcobra sim xml
This returns XML with all UI elements, their labels, identifiers, and positions. Use this to:
Tap by accessibility label (preferred):
bunx xcobra sim tap --label "Submit"
Tap by accessibility identifier:
bunx xcobra sim tap --id "submit-button"
Tap by coordinates:
bunx xcobra sim tap --x 200 --y 400
Add delays for animations:
bunx xcobra sim tap --label "Next" --pre-delay 500 --post-delay 300
Type text into focused input:
bunx xcobra sim type "Hello World"
Type from stdin:
echo "test@example.com" | bunx xcobra sim type --stdin
Preset gestures:
bunx xcobra sim gesture scroll-up
bunx xcobra sim gesture scroll-down
bunx xcobra sim gesture swipe-from-left-edge
Custom swipe:
bunx xcobra sim swipe --start-x 200 --start-y 400 --end-x 200 --end-y 100
Press hardware buttons:
bunx xcobra sim button home
bunx xcobra sim button lock
bunx xcobra sim button siri
Capture screenshot:
bunx xcobra sim screenshot --output screenshot.png
Record simulator video:
bunx xcobra sim record-video --output recording.mp4
Execute JS in the running Expo app:
bunx xcobra expo eval "Date.now()"
Get app state:
bunx xcobra expo eval "global.__REDUX_STORE__?.getState()"
Call exposed functions:
bunx xcobra expo eval "globalThis.testHelper?.getCurrentRoute()"
Stream console output:
bunx xcobra expo console
JSON format for parsing:
bunx xcobra expo console --json
Monitor network requests:
bunx xcobra expo network
Trigger a reload to refresh the JavaScript bundle:
bunx xcobra expo reload
This is useful when:
View latest crash:
bunx xcobra crash latest
List recent crashes:
bunx xcobra crash list
Show specific crash:
bunx xcobra crash show <crash-id>
List loaded scripts:
bunx xcobra expo src scripts
Get source code by script ID:
bunx xcobra expo src source <script-id>
List Metro modules:
bunx xcobra expo src modules
List all simulators:
bunx xcobra sim list
Target specific simulator:
bunx xcobra sim tap --udid "DEVICE-UDID" --label "OK"
Get current UI state
bunx xcobra sim xml
Perform action
bunx xcobra sim tap --label "Login"
Wait and verify
sleep 1
bunx xcobra sim xml | grep "Welcome"
Check for errors
bunx xcobra expo console --json | head -20
After navigating, verify you're on the expected screen:
# Check for expected text content
bunx xcobra sim xml | grep -i "expected title"
# Get full accessibility tree and search for elements
bunx xcobra sim xml > /tmp/ui.xml && cat /tmp/ui.xml
Use JavaScript eval to check the current route:
bunx xcobra expo eval "window.location?.pathname"
If deep links navigate to the wrong screen or you see unexpected content:
1. Check the current route in the app:
bunx xcobra expo eval "globalThis.testHelper?.getCurrentRoute()"
2. Verify the app directory structure:
Look for unexpected index routes that may be intercepting navigation:
# List all index files - these define default routes
find app -name "index.tsx" -o -name "index.ts" -o -name "index.js"
# Check for index routes inside groups that may override expected behavior
find app -path "*/(*)/*" -name "index.*"
3. Common issues:
app/(tabs)/index.tsx will be the default route for the (tabs) group, potentially overriding app/index.tsx_layout.tsx to properly nest routes4. Verify route structure matches expectations:
# List all route files
find app -name "*.tsx" | grep -v "_layout" | sort
# Check group structure
find app -type d -name "(*)"`
5. Test deep link resolution:
# Open a deep link and immediately check the route
xcrun simctl openurl booted "myapp://settings" && sleep 1 && bunx xcobra expo eval "window.location?.pathname"
Add global helpers in your app for testing:
if (__DEV__) {
globalThis.testHelper = {
getCurrentRoute: () => navigationRef.current?.getCurrentRoute(),
getState: () => store.getState(),
resetApp: () => { /* reset logic */ },
};
}
Then call via eval:
bunx xcobra expo eval "testHelper.getCurrentRoute()"