Developing Mobile Apps
telagod/code-abyss
Mobile development knowledge reference covering iOS (SwiftUI), Android (Jetpack Compose), React Native, and Flutter.
A skill your agent uses for simulator lifecycle, app install/launch, live viewing, UI inspection, touch/keyboard automation, screenshots, recordings, logs, pasteboard, hardware controls, and…
$ npx skills add NativeScript/SimDeck --skill simdeck -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install NativeScript/SimDeck simdeck --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/NativeScript/SimDeck.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/simdeck .claude/skills/simdeck && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "simdeck" agent skill from https://github.com/NativeScript/SimDeck/tree/main/skills/simdeck into .claude/skills/simdeck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simdeck", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/NativeScript/SimDeck/tree/main/skills/simdeckType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add NativeScript/SimDeck --skill simdeck -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install NativeScript/SimDeck simdeck --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NativeScript/SimDeck.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/simdeck .agents/skills/simdeck && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "simdeck" agent skill from https://github.com/NativeScript/SimDeck/tree/main/skills/simdeck into .agents/skills/simdeck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simdeck", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add NativeScript/SimDeck --skill simdeck -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install NativeScript/SimDeck simdeck --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NativeScript/SimDeck.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/simdeck .cursor/skills/simdeck && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "simdeck" agent skill from https://github.com/NativeScript/SimDeck/tree/main/skills/simdeck into .cursor/skills/simdeck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simdeck", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/NativeScript/SimDeck.git --path skills/simdeck--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add NativeScript/SimDeck --skill simdeck -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install NativeScript/SimDeck simdeck --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NativeScript/SimDeck.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/simdeck .gemini/skills/simdeck && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "simdeck" agent skill from https://github.com/NativeScript/SimDeck/tree/main/skills/simdeck into .gemini/skills/simdeck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simdeck", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install NativeScript/SimDeck simdeckInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add NativeScript/SimDeck --skill simdeck -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/NativeScript/SimDeck.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/simdeck .github/skills/simdeck && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "simdeck" agent skill from https://github.com/NativeScript/SimDeck/tree/main/skills/simdeck into .github/skills/simdeck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simdeck", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add NativeScript/SimDeck --skill simdeck -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install NativeScript/SimDeck simdeck --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/NativeScript/SimDeck.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/simdeck .opencode/skills/simdeck && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "simdeck" agent skill from https://github.com/NativeScript/SimDeck/tree/main/skills/simdeck into .opencode/skills/simdeck/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "simdeck", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
simdeckA skill your agent uses for simulator lifecycle, app install/launch, live viewing, UI inspection, touch/keyboard automation, screenshots, recordings, logs, pasteboard, hardware controls, and…
Simdeck is an agent skill from NativeScript/SimDeck. Use for simulator lifecycle, app install/launch, live viewing, UI inspection, touch/keyboard automation, screenshots, recordings, logs, pasteboard, hardware controls, and repeatable simulator flows.
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Mobile, covering Cross-platform mobile apps and iOS development. It works with iOS, Android, Flutter and React Native. The repository describes itself as: SimDeck is a developer tool built for streamlining mobile app development using agents. Drive iOS Simulators and Android emulators from your favorite IDE & CLI. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2d7346b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
flutterFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Simdeck loads about 3.6k tokens when it runs. Until then it costs about 52 tokens; SKILL.md has 1,259 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from NativeScript/SimDeck at commit 2d7346b, republished under its MIT licence (© NativeScript). 1,259 words, ~3,647 tokens.
.claude/skills/simdeck/SKILL.md (or your agent's skills folder).SimDeck automates iOS Simulators and Android emulators. Use the CLI for automation and the browser UI for live human visibility. iOS works with NativeScript, UIKit, SwiftUI, React Native, Expo, and Flutter apps; Android live viewing uses the emulator -share-vid shared display surface plus SimDeck's native host H.264 encoder, with lifecycle, screenshots, logs, and UIAutomator hierarchy dumps also handled through ADB.
SimDeck uses one long-running local service. Run simdeck first; it starts or
reuses the background service and prints the browser URL plus pairing code.
Pass --open only when you want SimDeck to open the default browser itself.
Pass -p <port> or --port <port> when the service should use a non-default
port. Pass -a or --autostart when the service should also be registered as
a macOS LaunchAgent.
Example response from simdeck:
{
"ok": true,
"pairingCode": "401974",
"pid": 91285,
"projectRoot": "-",
"started": true,
"url": "http://127.0.0.1:4310"
}simdeck
simdeck --open
simdeck -p 4311
simdeck -a
simdeck pair # prints LAN/Tailscale pairing URLs, code, and iOS QR
simdeck service stop
simdeck service kill # stops all SimDeck services from any binary
simdeck service restartUsually http://127.0.0.1:4310. Pass a simulator name or UDID to simdeck
when the browser URL should open with ?device=<UDID>. Use simdeck -p 4311
when the default port is not the right fit.
Use simdeck pair when a native iOS client needs to pair. It starts or
refreshes the LaunchAgent-backed service, detects LAN and Tailscale IPv4
addresses, and prints a QR with a simdeck://pair URL. Normal service restarts
preserve the token and pairing code; use simdeck service reset only when you
need to rotate them.
Use simdeck service kill or simdeck service killall when you need a clean
slate across installed and source-checkout binaries.
Optionally, when a user might want to drive the current simulator from their
phone, run simdeck link [sim] to print an https://app.simdeck.sh/open
universal link that opens SimDeck Studio on iOS (or the launchpad in a browser)
pre-targeted at the resolved simulator.
Always first run simdeck and open the reported URL in the in-app browser using the Browser tool if available.
If Browser Use is not available, only then use simdeck --open; it opens the default browser and may take focus away from the app.
Start by choosing a project default device. simdeck use <UDID> stores the
selection for the current workspace/CWD so later commands can omit the UDID.
Explicit UDIDs, --device, SIMDECK_DEVICE, and SIMDECK_UDID still work for
one-off overrides. Prefer short forms in agent loops, such as
simdeck tap "Continue" and simdeck snapshot --format agent --max-depth 2 -i.
simdeck list
simdeck list --format json
simdeck use <UDID>
simdeck boot <UDID>
simdeck boot android:<AVD_NAME> --android-emulator-arg=-no-snapshot
simdeck shutdown
simdeck erase
simdeck core-simulator restart
simdeck install /path/to/App.app
simdeck install /path/to/App.ipa
simdeck install android:<AVD_NAME> /path/to/app.apk
simdeck launch com.example.App
simdeck uninstall com.example.App
simdeck open-url myapp://route
simdeck open-url https://example.com
simdeck toggle-appearance
simdeck camera sources
simdeck camera start com.example.App --file /absolute/path/to/camera.mov
simdeck camera start com.example.App --webcam
simdeck camera switch --placeholder
simdeck camera status
simdeck camera stopsimdeck list defaults to compact JSON for token-efficient agent selection.
Use simdeck list --format json only when you need full paths and display
metadata.
Build apps with project tooling.
Android devices use IDs like android:Pixel_8_API_36. simdeck list discovers
AVDs from the Android SDK.
SimDeck-owned Android boots use emulator gRPC screenshot streaming for live
video, keep the emulator shared-video surface as fallback, and use
--android-gpu host by default. Android browser streams default to software
H.264 at 60 fps with a 960px long-edge cap so emulator gRPC frame production
stays smooth. On macOS, managed boots use -qt-hide-window so the Qt render
loop stays active without showing the native emulator window.
Use simdeck service restart --android-gpu auto or
--android-gpu swiftshader_indirect only when host GPU rendering is unstable.
Optional user defaults live in ~/.simdeck/config.json. Supported keys include
service.port, android.emulatorArgs, and android.disableAudio; explicit
CLI/API boot arguments still win for one-off runs.
Use targeted checks for test loops. describe is a diagnostic snapshot of the whole hierarchy. For verification, prefer the service APIs exposed by simdeck/test: action, query, waitFor, assert, selector tap, and batch.
simdeck describe
simdeck describe --format agent --max-depth 4
simdeck describe --format agent --max-depth 4 --interactive
simdeck snapshot --format agent --max-depth 4 -i
simdeck describe --format compact-json
simdeck describe --point 120,240
simdeck describe --source auto
simdeck describe --source nativescript|react-native|flutter|swiftui|uikit
simdeck describe --source native-ax
simdeck describe --source android-uiautomator
simdeck describe --direct
simdeck wait-for --label "Welcome" --timeout-ms 5000
simdeck wait --label "Welcome" --timeout-ms 5000
simdeck assert --id login.button --source auto --max-depth 8The default source is native-ax, which is the fastest and most universal path for agents. Use --source auto when you want richer NativeScript, React Native, Flutter, SwiftUI, or UIKit inspector data before native accessibility fallback. Use --direct or --source native-ax for the private CoreSimulator accessibility bridge. Use --source android-uiautomator for Android emulator UIAutomator hierarchies.
For Android IDs, describe uses uiautomator dump; use --format agent or
--format compact-json the same way as iOS.
Use --interactive or -i when an agent only needs controls and actionable framework nodes; SimDeck keeps ancestor context so the output is still navigable. Agent output labels nodes with refs such as @e3; reuse them with simdeck press @e3. snapshot, press, and wait are aliases for describe, tap, and wait-for.
Prefer selectors, coordinates only when needed. Selector taps go through the service and wait for the element server-side. Use --expect-id, --expect-label, or another --expect-* selector when the tap should also wait for the next screen before returning.
simdeck tap --id LoginButton --wait-timeout-ms 5000
simdeck tap --id com.apple.settings.screenTime --expect-id BackButton
simdeck tap --label "Continue" --element-type Button
simdeck tap 120 240
simdeck tap "Continue"
simdeck press @e3For persistent app integration tests, use simdeck/test instead of shelling out repeatedly:
import { connect } from "simdeck/test";
const udid = "your-device-udid";
const simdeck = await connect({ udid });
try {
await simdeck.launch("com.example.App");
await simdeck.waitFor({ id: "login.button" }, { maxDepth: 8 });
await simdeck.tap(0.5, 0.5);
await simdeck.assert({ label: "Welcome" }, { maxDepth: 8 });
const matches = await simdeck.query({ id: "account.name" });
console.log(matches);
} finally {
simdeck.close();
}simdeck/test state-query helpers default to source: "native-ax" for fast
agent control. Pass source: "auto" only when you intentionally want richer
framework inspector trees before native accessibility fallback.
Use tree()/describe only when a test needs to print the whole UI for debugging. In a normal agent loop, do not fetch the full tree after every action; verify the specific element or text that proves the step succeeded.
simdeck tap 120 240
simdeck touch 0.5 0.5 --phase began --normalized
simdeck touch 0.5 0.5 --phase ended --normalized
simdeck touch 120 240 --down --up --delay-ms 800
simdeck swipe 200 700 200 200
simdeck swipe 200 700 200 200 --duration-ms 500 --pre-delay-ms 100 --post-delay-ms 250
simdeck gesture scroll-up
simdeck gesture scroll-down
simdeck gesture swipe-from-left-edge
simdeck gesture swipe-from-right-edge
simdeck pinch --start-distance 160 --end-distance 80
simdeck pinch --start-distance 0.20 --end-distance 0.35 --normalized --duration-ms 250 --steps 8
simdeck rotate-gesture --radius 100 --degrees 90
simdeck rotate-gesture --radius 0.12 --degrees 45 --normalized --duration-ms 250 --steps 8
simdeck type 'hello'
simdeck type --stdin
simdeck type --file message.txt
simdeck key enter
simdeck key 42 --duration-ms 500
simdeck key-sequence --keycodes h,e,l,l,o --delay-ms 75
simdeck key-combo --modifiers cmd,shift --key z
simdeck dismiss-keyboard
simdeck button software-keyboard
simdeck button home
simdeck back
simdeck button lock --duration-ms 1000
simdeck button side-button
simdeck button volume-up
simdeck button volume-down
simdeck button action --duration-ms 1000
simdeck button mute
simdeck button digital-crown
simdeck crown --delta 50
simdeck button left-side-button
simdeck button siri
simdeck button apple-pay
simdeck home
simdeck app-switcher
simdeck rotate-left
simdeck rotate-right
simdeck pasteboard set 'text'
simdeck pasteboard getUse --stdin or --file for text with quotes, newlines, shell variables, or shell-sensitive characters.
simdeck tap --label "Continue" --wait-timeout-ms 5000
simdeck tap --label "Continue" --expect-label "Done"
simdeck back
simdeck swipe 200 700 200 200 --pre-delay-ms 100 --post-delay-ms 250
simdeck button lock --duration-ms 1000Prefer to use wait-for or assert in a batch to wait for UI state instead of fixed delays. sleep 500 in a batch waits 500 ms. Use sleep 0.5s or sleep --seconds 0.5 when you want to write seconds explicitly.
Use batch when steps are known; use discrete commands when a later step depends on parsing previous output.
simdeck batch \
--step "tap --label Continue --wait-timeout-ms 5000 --expect-label Done" \
--step "type 'hello world'" \
--step "back" \
--step "pinch --start-distance 0.20 --end-distance 0.35 --normalized"Batch rules: one source (--step, --file, or --stdin); set the default with simdeck use <UDID> or keep <UDID> at batch level; ordered steps; fail-fast by default; --continue-on-error for best effort. Step commands: tap, back, wait-for, assert, swipe, gesture, pinch, rotate-gesture, touch, type, button, key, key-sequence, key-combo, sleep.
For JS tests, batch can combine action and verification without extra CLI process startup:
await simdeck.batch([
{ action: "tap", selector: { label: "Continue" }, waitTimeoutMs: 5000 },
{
action: "waitFor",
selector: { label: "Continue Tapped" },
timeoutMs: 5000,
},
{ action: "assert", selector: { id: "fixture.status" } },
]);For app-style flows, SimDeck can run a practical subset of Maestro YAML:
simdeck maestro test flow.yaml --artifacts-dir artifacts/maestrosimdeck screenshot --output screen.png
simdeck screenshot --with-bezel --output screen-bezel.png
simdeck screenshot --stdout > screen.png
simdeck record --seconds 5 --output screen-recording.mp4
simdeck record --seconds 5 --stdout > screen-recording.mp4
simdeck logs --seconds 30 --limit 200
simdeck chrome-profile
simdeck processes
simdeck stats
simdeck stats --watch
simdeck sample --seconds 3Use screenshots for still evidence, --with-bezel when the device frame matters, and record for short MP4 screen recordings. Use stats for simulator app CPU, memory, disk write, network receive/send rates, connections, hang, and crash/termination signals. Use sample only when a short CPU stack capture is worth the extra pause. Prefer describe for token-efficient state dumps, if they have enough context.
Use camera start when a booted iOS simulator app needs a deterministic camera
feed. The CLI talks to the SimDeck daemon, which owns the camera source and
shared-memory writer, then injects the camera shim into the app with
simctl launch and relaunches the bundle. Use camera switch to swap between
placeholder, media, and webcam sources without relaunching while the daemon feed
is alive.
simdeck camera sources
simdeck camera start com.example.App --file /absolute/path/to/feed.mov --mirror off
simdeck camera switch --placeholder
simdeck camera start com.example.App --webcam "FaceTime HD Camera"
simdeck camera stopMedia paths must be absolute. URLs are treated as video streams. Webcam support depends on macOS camera availability and permission for SimDeck.
simdeck use <UDID>, boot/select the device, open viewer if in-app browser availabledescribe --format agent --max-depth 4 to understand an unfamiliar screen.waitFor/assert/query, not repeated full describe dumps.describe as a failure/debug artifact.For a richer hierarchy, if user wants to opt-in
NativeScript apps can connect directly to the running server from JS and expose their view hierarchy plus raw UIKit backing views
import { startSimDeckInspector } from "@nativescript/simdeck-inspector";
if (__DEV__) {
startSimDeckInspector({ port: 4310 });
}The runtime connects to GET /api/inspector/connect as a WebSocket
React Native apps can expose their component tree and Metro dev-mode source locations with the inspector package:
import "react-native-simdeck/auto";
import "expo-router/entry";Import it before expo-router/entry or AppRegistry.registerComponent(...).
The auto entrypoint no-ops outside development, reads
EXPO_PUBLIC_SIMDECK_PORT when present, and otherwise scans common SimDeck
service ports. Use the manual startSimDeckReactNativeInspector(...) API
when you need custom host/path/security options.
© NativeScript, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/simdeck of NativeScript/SimDeck.
Open the folder on GitHubat commit 2d7346b
Simdeck next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Simdeck this skillNativeScript/SimDeck | 152 | — | ~3.6k | Automated safety check: Pass | MIT | |
| Developing Mobile Appstelagod/code-abyss | 244 | — | ~258 | Automated safety check: Pass | MIT | |
| Senior Mobileborghei/Claude-Skills | 874 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Expo UIarcboxlabs/linkcode | 155 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Flutter Adding Home Screen Widgetsbtwld/superdeck | 129 | — | ~2.2k | Automated safety check: Pass | BSD-3-Clause | |
| Mobile Devcallstackincubator/codex-mobile-dev-plugin | 138 | — | ~5.5k | Automated safety check: Pass | None |
telagod/code-abyss
Mobile development knowledge reference covering iOS (SwiftUI), Android (Jetpack Compose), React Native, and Flutter.
borghei/Claude-Skills
A skill your agent uses when the user asks to "build a mobile app", "scaffold React Native project", "create SwiftUI views", "set up Jetpack Compose", "optimize mobile performance", "configure Expo…
arcboxlabs/linkcode
Framework (OSS). An agent skill from arcboxlabs/linkcode.
btwld/superdeck
Adds home screen widgets to a Flutter app for Android and iOS.
callstackincubator/codex-mobile-dev-plugin
A skill your agent uses when building, running, changing, or debugging local iOS, Android, Expo, React Native, or SwiftUI apps.
adrianhajdin/react-native-lingua
Stream router for Chat, Video, Feeds, and Moderation. An agent skill from adrianhajdin/react-native-lingua.
Categories
A skill your agent uses for simulator lifecycle, app install/launch, live viewing, UI inspection, touch/keyboard automation, screenshots, recordings, logs, pasteboard, hardware controls, and…. Simdeck is an agent skill from NativeScript/SimDeck. Use for simulator lifecycle, app install/launch, live viewing, UI inspection, touch/keyboard automation, screenshots, recordings, logs, pasteboard, hardware controls, and repeatable simulator flows.
Simdeck fits situations like: simulator lifecycle; app install/launch; touch/keyboard automation; hardware controls.
Run `npx skills add NativeScript/SimDeck --skill simdeck -a claude-code`. Or copy the skill folder (skills/simdeck in NativeScript/SimDeck) into .claude/skills/simdeck in your project. Claude Code loads it when a task matches its description.
Run `npx skills add NativeScript/SimDeck --skill simdeck -a codex`. Or copy the skill folder (skills/simdeck in NativeScript/SimDeck) into .agents/skills/simdeck in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add NativeScript/SimDeck --skill simdeck -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/simdeck, .gemini/skills/simdeck, .github/skills/simdeck and .opencode/skills/simdeck in your project.
Going by SKILL.md and its folder, Simdeck needs the command-line tools its instructions call (flutter).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Simdeck is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Simdeck: Developing Mobile Apps (telagod/code-abyss, 244 stars), Senior Mobile (borghei/Claude-Skills, 874 stars), Expo UI (arcboxlabs/linkcode, 155 stars) and Flutter Adding Home Screen Widgets (btwld/superdeck, 129 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
NativeScript (a GitHub organization) maintains it in NativeScript/SimDeck, which has 152 GitHub stars. The repository was last updated on September 11, 2026.
Source: NativeScript/SimDeck on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.