react-native-mcp: Skill for Cursor

.cursor/skills/mcp-testing/SKILL.md

mcp-testing is a skill for Cursor from ohah/react-native-mcp. It costs 72 tokens per session (3,075 once invoked), scanned A, original, MIT.

A 32-step procedure for testing every feature of a React Native MCP server against its demo app. React Native is a framework for building mobile apps with JavaScript.

In plain words
What is it for?
Use it to run the complete MCP test flow on iOS or Android using Metro, idb or adb, and the demo app.
Why use it?
It provides a fixed sequence and success checks for verifying taps, swipes, text entry, element queries, scripts, network requests, and related behavior.

Skill for Cursor

Written for Cursor: installed under .cursor/.

This is ohah/react-native-mcp's own configuration. It tells Cursor how to work on react-native-mcp itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything react-native-mcp configures →

Reuse

Borrowing it

Nothing to install: this file belongs to ohah/react-native-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/ohah/react-native-mcp/main/.cursor/skills/mcp-testing/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/ohah/react-native-mcp

Made for: Cursor.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for mcp-testing

README.md
[![agentmods](https://agentmods.dev/badge/skills/ohah/react-native-mcp/mcp-testing/github.svg)](https://agentmods.dev/skills/ohah/react-native-mcp/mcp-testing)
Your own site
<a href="https://agentmods.dev/skills/ohah/react-native-mcp/mcp-testing"><img src="https://agentmods.dev/badge/skills/ohah/react-native-mcp/mcp-testing/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for mcp-testing

Your own site · 80×15
<a href="https://agentmods.dev/skills/ohah/react-native-mcp/mcp-testing"><img src="https://agentmods.dev/badge/skills/ohah/react-native-mcp/mcp-testing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 72 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,075 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00072 $0.03075
Opus 5.5 $0.00029 $0.01230
Sonnet 5.5 $0.00014 $0.00615
Haiku 4.5 $0.00007 $0.00308

Measured 1mo ago against content hash 653fc7c602a5, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

mcp-testing scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/skills/mcp-testing/SKILL.md · 124 lines

How it starts

The opening of the file, as written. The whole thing — 124 lines — stays where its author put it; the contents beside it link to each section on GitHub.

React Native MCP 전체 기능 테스트

데모 앱(examples/demo-app)은 32개 스텝으로 구성되어 있다. 이 32개 스텝을 모두 순서대로 진행하고, 각 스텝의 성공 기준을 만족하면 MCP 서버의 내부 기능(tap, swipe, type_text, query_selector, assert_text, evaluate_script, webview_evaluate_script, list_network_requests 등)을 전부 검증한 것이다. 스크롤은 MCP scroll 도구가 없으므로 swipe(platform, x1, y1, x2, y2)로 한다.

클릭/탭 (필수 흐름): query_selector(또는 take_snapshot)로 요소 찾기 → 반환된 measure(pageX, pageY, width, height)로 좌표 계산 → tap(platform, x, y)으로 idb(iOS)/adb(Android) 네이티브 클릭. JS 쪽 triggerPress가 아닌 실제 터치 주입.

스텝 이동: #step-nav-next(다음), #step-nav-prev(이전)으로 measure → tap.


사전 조건

  • Metro: cd examples/demo-app && npm start (기본 포트 8230)
  • 앱: npm run ios 또는 npm run android (MCP 런타임 주입됨)
  • MCP 서버 연결 후 앱에서 __REACT_NATIVE_MCP__ 사용 가능
  • iOS: idb 설치·연결. Android: adb 연결.

전체 테스트: 32개 스텝 순서 (모두 진행 필수)

아래 표는 스텝 1부터 32까지 순서대로 진행해야 하는 전체 목록이다. 각 스텝을 완료한 뒤 다음 스텝으로 넘어가고, 32까지 모두 통과하면 MCP 내부 기능 전체 검증이 끝난다.

Step 구분 검증 요약 사용 도구·동작
1 Press testID 버튼 탭 → Count 1 이상 query_selector #press-counter-button → measure → tap → assert_text "Count: 1"
2 Press testID 없음 버튼 탭 query_selector :text("testID 없음") → measure → tap → 숫자 증가 확인
3 Press TouchableOpacity·TouchableHighlight·Button·이미지·Icon+Label 각각 탭 query_selector로 각 버튼 찾아 measure → tap 반복 → 각 카운트 1씩 증가 확인
4 Press 롱프레스 버튼 2개 query_selector #press-long-press-button, :text("롱프레스 testID없음") → tap(..., duration) 롱프레스 → 카운트 증가 확인
5 Input testID 있는 TextInput에 입력 type_text(uid input-with-testid, 문자열) → assert_text "입력값: (문자열)"
6 Input testID 없는 TextInput에 입력 query_selector로 placeholder 등으로 TextInput uid 획득 → type_text → "입력값:" 확인
7 ScrollView scroll-view-no-ref 스크롤 후 버튼 탭 swipe로 스크롤(ScrollView 영역에서 y1>y2) → query_selector #scroll-btn-N → tap → "버튼 N (1)" 확인
8 ScrollView scroll-view-with-ref 스크롤 후 버튼 탭 swipe로 스크롤 → query_selector #scroll-btn-N → tap → 버튼 숫자 증가 확인
9 ScrollView testID 없는 ScrollView 스크롤 후 버튼 탭 swipe로 스크롤 → query_selector :text("버튼 10") 등 → tap → 카운트 확인
10 FlatList testID 있는 FlatList 스크롤 후 탭 swipe로 스크롤 → query_selector #demo-app-flat-list-btn-item-N 또는 :text("탭:") → tap → "탭: 1" 이상 assert_text
11 FlatList testID 없는 FlatList 스크롤 후 탭 swipe로 스크롤 → query_selector :text("클릭:") 등 → tap → 항목 숫자 증가 확인
12 WebView WebView 내부 버튼 클릭 또는 RN 탭 webview_evaluate_script(webViewId demo-app-webview, script로 document.querySelector("button").click()) 또는 query_selector → tap → "RN 탭 수: 1" 이상 확인
13 WebView 등록 WebView ID·내부 스크립트 실행 evaluate_script로 getRegisteredWebViewIds → webview_evaluate_script(demo-app-webview-naver, document.title 등) 결과 확인
14 WebView testID 없는 WebView에서 postMessage 수신 확인 query_selector로 WebView/버튼 영역 measure → tap → assert_text "#postmessage-count"로 "postMessage 수: 1" 이상 확인
15 Network GET /posts/1 요청·응답 query_selector #network-fetch-get → tap → list_network_requests에서 /posts/1·응답 확인, assert_text "응답: 200"
16 Network POST /posts status 201 query_selector #network-fetch-post → tap → list_network_requests에서 POST·201 확인
17 Network 3건 요청 수집 query_selector #network-fetch-multiple → tap → list_network_requests에서 users/1, todos/1, comments 3건 확인
18 Network 404 요청 확인 query_selector #network-fetch-error → tap → list_network_requests 404, assert_text "응답: 404"
19 Network XHR GET /albums/1 캡처 query_selector #network-xhr-get → tap → list_network_requests에서 XHR GET /albums/1 확인
20 Gesture Touchable·Pressable·RNGH 3개 탭 query_selector gesture-compare-touchable, gesture-compare-pressable, gesture-compare-gh-touchable → tap 각각 → 카운트 1씩 증가
21 Gesture gesture-tap-detector-wrapper 탭 query_selector #gesture-tap-detector-wrapper → tap → assert_text로 숫자 1 이상 확인 (Gesture.Tap() idb 터치 수신)
22 Gesture RNGH Pressable 탭 query_selector #gesture-gh-pressable → tap → "RNGH TouchableOpacity: 1" 이상 확인
23 Gesture testID 없음 RNGH 탭 query_selector :text("RNGH 라벨만") → tap → 숫자 증가 확인
24 Gesture Reanimated 트리거 탭 query_selector #gesture-reanimated-trigger 또는 #gesture-reanimated-box → tap → "눌러보세요" 아래 숫자 1 이상
25 Gesture Reanimated 라벨만 탭 query_selector :text("눌러보세요 (라벨만)") → tap → 스케일 박스 숫자 증가
26 Gesture Reanimated ScrollView 스크롤 swipe로 스크롤(해당 영역에서 y1>y2) → "Reanimated 목록 아이템 30" 등 하단 노출·스크롤 가능 확인
27 Gesture Swipeable 행 스와이프 query_selector "스와이프 to delete 행 1" 등 → measure → swipe 왼쪽 → "삭제" 영역 노출 확인
28 Gesture 드래그(Pan) 완료 카운트 query_selector #gesture-drag-area → measure → swipe → assert_text #gesture-drag-count "드래그 완료: 1" 이상
29 Gesture Pull to refresh 화면 상단 근처에서 swipe 아래 방향 → assert_text "새로고침 횟수: 1" 이상
30 Gesture Drawer 열기·닫기 query_selector #gesture-drawer-open → tap → assert_text "드로워: 열림" → "닫기" 또는 drawer-overlay tap → "닫힘" 확인
31 Gesture Pager 스와이프 페이저 영역 measure → 가로 swipe → assert_text 또는 query_selector "현재 페이지: 1/2/3" (pager-status)
32 Gesture Bottom sheet 스와이프 하단 시트 영역 measure → swipe 위쪽 → assert_text "상태: 열림" 또는 sheet-status 확인

Read the full file on GitHub · 124 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 1mo ago First seen · 124 lines · 72 tokens per session scan A 653fc7c602a5

Subscribe to this mod's changes

mcp-testing is a skill published in the GitHub repository ohah/react-native-mcp (7 stars, last pushed 7mo ago), licensed MIT. It adds 72 tokens to every session and 3,075 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

android-ui-journey-testing

XML-specified Android UI journey testing, interactive step execution, assertion verification, and JSON outcome reporting.

sickn33/agentic-awesome-skills · 27 tokens

android_ui_verification

Automated end-to-end UI testing and verification on an Android Emulator using ADB.

sickn33/agentic-awesome-skills · 22 tokens

solopi-ai

A command-line framework for testing Android apps and devices with SoloPi, including on-device or cloud AI decision models. It manages devices, test cases, recorded interactions, replays, performance history, and evidence.

alipay/SoloPi · 82 tokens

eas-simulator

Run and control a user's app on a remote iOS/Android simulator hosted on EAS cloud. Read before running any eas simulator: commands - it has the current syntax for this experimental API. Use whenever the user needs a simulator they can't run locally - 'run my app on a cloud simulator', 'use eas simulator to…

expo/skills · 243 tokens

dogfood

Systematically explore and test a mobile app on iOS/Android with agent-device to find bugs, UX issues, and other problems. Use when asked to dogfood, QA, exploratory test, find issues, bug hunt, or test this app on mobile.

callstack/agent-device · 55 tokens

test-native-extension

Validate a third-party control repo across four automated layers plus one printed manual recipe. Layer 1 asserts native-source structure (Android getName() and iOS +moduleName to manifest nativeModule; @ReactMethod / RCTEXPORTMETHOD to methods; no @ReactModule) plus load/init readiness (ReactPackage public no-arg…

microsoft/power-platform-skills · 211 tokens