test-on-device

test-on-device is a skill for Claude Code from toss/apps-in-toss-harness. It costs 95 tokens per session (5,362 once invoked), scanned A, original, BSD-3-Clause.

A workflow for putting a mini-app on a real phone through the standard console path. It builds an app bundle, uploads it, checks compilation, and provides the link for opening it in the Toss app.

In plain words
What is it for?
It helps build and upload a mini-app, confirm its compile status, and open the uploaded app in the Toss mobile app.
Why use it?
A browser mock does not show how the app behaves on an actual phone, while device debugging serves a different purpose. This gives a repeatable path for checking a built app on the real device.

Skill for Claude Code

Written for Claude Code: argument-hint in frontmatter.

Part of the ait plugin — 11 skills, 4 commands shipped together

Good fit It helps build and upload a mini-app, confirm its compile status, and open the uploaded app in the Toss mobile app.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/toss/apps-in-toss-harness/test-on-device
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add toss/apps-in-toss-harness --skill test-on-device
Clone the repo
git clone --depth 1 https://github.com/toss/apps-in-toss-harness

Made for: Claude Code.

Or install ait, the plugin that ships this one along with the rest of its 11 skills, 4 commands.

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 test-on-device

README.md
[![agentmods](https://agentmods.dev/badge/skills/toss/apps-in-toss-harness/test-on-device/github.svg)](https://agentmods.dev/skills/toss/apps-in-toss-harness/test-on-device)
Your own site
<a href="https://agentmods.dev/skills/toss/apps-in-toss-harness/test-on-device"><img src="https://agentmods.dev/badge/skills/toss/apps-in-toss-harness/test-on-device/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 test-on-device

Your own site · 80×15
<a href="https://agentmods.dev/skills/toss/apps-in-toss-harness/test-on-device"><img src="https://agentmods.dev/badge/skills/toss/apps-in-toss-harness/test-on-device.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 95 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,362 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.00095 $0.05362
Opus 5.5 $0.00038 $0.02145
Sonnet 5.5 $0.00019 $0.01072
Haiku 4.5 $0.00010 $0.00536

Measured 6d ago against content hash 708b3a8fd613, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

test-on-device 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 6d 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.

packages/agent-plugin/shared/skills/test-on-device/SKILL.md · 317 lines

How it starts

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

test-on-device skill

목적

/ait:test-on-device는 지금 만들고 있는 미니앱을 실제 토스 앱에서 확인하는 정규 경로를 한 명령으로 밟는다: 번들 빌드 → 콘솔 업로드 → 컴파일 확인 → 토스 앱에서 열기.

"폰에서 보고 싶다"에 대응하는 경로는 셋이고, 목적이 다르다:

원하는 것 경로
브라우저에서 mock으로 개발 프로젝트의 dev 스크립트(package.json scripts) + /ait:debug 환경 1 (토스 앱 불필요)
실기기에서 동작 확인 이 skill — 번들을 콘솔에 올려 토스 앱에서 연다
실기기에서 CDP로 관측·디버깅 /ait:setup-debugger 배선 후 /ait:debug 환경 3(QR attach)

이 경로는 특정 스택 전용이 아니다 — 전제는 .ait 번들 하나뿐이라, web-framework 프로젝트, React Native, Unity·엔진 HTML5 빌드 모두 업로드부터는 같은 절차를 탄다. 스택마다 다른 것은 빌드 방법과 산출물 위치뿐이고, 이는 프로젝트를 읽어 정한다(3).

의존

  • cwd가 미니앱 프로젝트 루트여야 한다. 웹·RN 프로젝트는 package.json과 번들 설정 파일이 있다. 정본 scaffold(create-ait-app 0.2.x, new-miniapp skill)는 apps-in-toss.config.ts를 쓰고, 구세대 --local 오프라인 폴백 템플릿 (new-miniapp L-5)은 granite.config.ts를 쓴다. Unity는 Packages/manifest.json 이나 Assets/에 SDK가 있다. 프로젝트 표지가 하나도 없으면 프로젝트 루트로 이동 안내 후 중단.
  • 콘솔 MCP(ait-console) 인가가 1회 필요하다 — /mcp에서 승인한다. 인가되지 않았으면 그 안내만 하고 중단한다.
  • 콘솔에 등록된 앱이 있어야 한다. 없으면 miniapp_create로 1회 등록한다 (아래 2 — 이미 있으면 절대 새로 만들지 않는다).
  • 아이콘이 비어 있어도 ait build는 실패하지 않는다. 3.x (apps-in-toss.config.ts) 스키마에는 brand.icon이 아예 없고(CLI 3.x 마이그레이션이 brand에서 primaryColor 외 속성을 지운다), 2.x (granite.config.ts)도 스캐폴드 기본값이 icon: ''이라 빈 값으로 빌드가 통과한다 — CLI 2.10.8·3.0.5 소스 확인. 다만 2.x 폴백에서 빈 값으로 빌드한 번들이 콘솔 컴파일(CREATED)은 통과하고 앱 실행 시점에 "잠시 문제가 생겼어요"로 실패했다는 보고가 있다(harness#90 — 이 skill이 재현·확인한 것은 아니다). 등록용 자산 자체가 없으면 /ait:design을 먼저 안내한다.

입력

/ait:test-on-device는 인자를 받지 않는다. 대상 앱·워크스페이스는 콘솔 MCP 세션이 결정한다(아래 2).

실행 순서

1. 사전 확인 — appName 일치 가드

ls package.json apps-in-toss.config.ts granite.config.ts Packages/manifest.json 2>/dev/null

프로젝트 표지가 하나도 없으면 중단:

미니앱 프로젝트 파일(package.json과 apps-in-toss.config.ts·granite.config.ts, 또는
Unity의 Packages/manifest.json)을 찾을 수 없습니다. 미니앱 프로젝트 루트에서
다시 실행해주세요. 예: cd <project-root> && /ait:test-on-device

웹·RN은 발견된 번들 설정 파일(apps-in-toss.config.ts가 있으면 그것을, 없으면 granite.config.ts를 — 의존 절 참고)을 Read로 읽어 appName을 확인한다. Unity·엔진 프로젝트는 SDK의 설정 화면이나 패키지 문서에서 앱 이름을 정하는 곳을 찾아 읽고, 어디인지 모르면 사용자에게 묻는다. Deploy Key가 든 설정 파일은 열지 않는다. 이 값이 콘솔에 등록된 앱의 appName과 정확히 같아야 한다. 불일치 번들은 업로드 자체는 성공하지만 컴파일에서 BUILD_FAILED로 끝난다(에러 메시지: "콘솔에 등록된 앱 ID와 granite.config.ts의 appName이 일치하지 않아요" — 콘솔 쪽 메시지 문구는 설정 파일 종류와 무관하게 고정이다). 불일치를 발견하면 업로드 전에 멈추고 어느 쪽을 맞출지 사용자에게 묻는다 — 이름이 다르다는 이유로 콘솔에 앱을 새로 만들지 않는다.

Read the full file on GitHub · 317 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. 6d ago First seen · 317 lines · 95 tokens per session scan A 708b3a8fd613

Subscribe to this mod's changes

test-on-device is a skill published in the GitHub repository toss/apps-in-toss-harness (186 stars, last pushed 3d ago), licensed BSD-3-Clause. It adds 95 tokens to every session and 5,362 once invoked, about $0.0004 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-10-23.

Related

Other skills, from other repositories

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

ios-simulator

Verify and debug native, React Native, Expo, or Flutter apps on an iOS Simulator with agent-device. Use when an agent needs to launch an app, inspect its live UI, tap, type, scroll, validate a code change, collect failure evidence, or reproduce a workflow on an iPhone or iPad Simulator.

callstack/agent-device · 69 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