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.
npx skills add fatihkan/badi --skill expo-modulesgit clone --depth 1 https://github.com/fatihkan/badiWrote 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.
[](https://agentmods.dev/skills/fatihkan/badi/expo-modules)<a href="https://agentmods.dev/skills/fatihkan/badi/expo-modules"><img src="https://agentmods.dev/badge/skills/fatihkan/badi/expo-modules.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 3 findings, up to medium
- medium MCP Rug Pull · line 32 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 39 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 237 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00077 | $0.01917 |
| Opus 5 | $0.00039 | $0.00958 |
| Sonnet 5 | $0.00015 | $0.00383 |
| Haiku 4.5 | $0.00008 | $0.00192 |
Grade A, and why
expo-modules 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 yesterday.
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.
How it starts
The opening of the file, as written. The whole thing — 305 lines — stays where its author put it; the contents beside it link to each section on GitHub.
expo-modules
A guide to writing native modules in Swift (iOS) and Kotlin (Android) with the Expo Modules API. Function/view/event module structure, async definitions, autolinking, and TypeScript-binding discipline.
What It Does
- Creating a new module with
create-expo-module - Swift
Moduleand KotlinModuleclass structure Function,AsyncFunction,Property,Events,Viewdefinitions- TypeScript bindings and
requireNativeModuleusage - Local module (inside the project) vs publishable package
- Event emitter pattern
Creating a New Module
# New package (publishable to npm)
npx create-expo-module my-native-module
cd my-native-module
npm run build
npm run open:ios # open in Xcode
npm run open:android # open in Android Studio
# Local module (this project only)
npx create-expo-module@latest --local my-feature
# Creates it under modules/my-feature/
Directory Structure
my-native-module/
android/
src/main/java/expo/modules/mynativemodule/
MyNativeModuleModule.kt
ios/
MyNativeModuleModule.swift
src/
index.ts # TypeScript binding
MyNativeModule.types.ts
MyNativeModuleModule.ts
MyNativeModuleView.tsx
expo-module.config.json
package.json
iOS — Swift Module
// ios/MyNativeModuleModule.swift
import ExpoModulesCore
public class MyNativeModuleModule: Module {
public func definition() -> ModuleDefinition {
Name("MyNativeModule")
Constants([
"PI": Double.pi
])
Function("hello") {
return "Hello from Swift"
}
AsyncFunction("setValueAsync") { (value: String) in
UserDefaults.standard.set(value, forKey: "myValue")
}
AsyncFunction("getValueAsync") { () -> String? in
return UserDefaults.standard.string(forKey: "myValue")
}
Events("onChange")
OnStartObserving {
// when a listener is added
}
OnStopObserving {
// when a listener is removed
}
View(MyNativeModuleView.self) {
Prop("url") { (view: MyNativeModuleView, url: URL) in
view.url = url
}
Events("onLoad")
}
}
}
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.
- yesterday First seen · 305 lines · 77 tokens per session scan A 8e0b0043f7ec
expo-modules is a skill published in the GitHub repository fatihkan/badi (7 stars, last pushed 2d ago), licensed MIT. It adds 77 tokens to every session and 1,917 once invoked, about $0.0004 per session on Opus 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-09-06.
Other skills, from other repositories
ci-tests
Run the test suite for the current repo, auto-detecting Python (pytest/uv), Node (vitest/pnpm), or Rust (cargo test).
swiftui-view-refactor
Refactor a SwiftUI view file for consistent property ordering, MV patterns, view model handling, and Observation usage; split an oversized body via same-file computed view properties or MARK-organized extensions. Use when asked to clean up a SwiftUI view's layout, reorder its properties, or standardize…
watchos-development
Use when building or reviewing a watchOS app or WatchKit extension — app structure and independent-app configuration, Watch Connectivity / companion-app sync, complications and Smart Stack widgets, controls or Live Activities on watch, background refresh and networking limits, watchOS-specific SwiftUI design…
xcode-build-fixer
Apply approved Xcode build optimization changes following best practices, then re-benchmark to verify improvement. Use when a developer has an approved optimization plan from xcode-build-orchestrator, wants to apply specific build fixes, needs help implementing build setting changes, script phase guards, source-level…
xcode-build-orchestrator
Orchestrate Xcode build optimization by benchmarking first, running the specialist analysis skills, prioritizing findings, requesting explicit approval, delegating approved fixes to xcode-build-fixer, and re-benchmarking after changes. Use when a developer wants an end-to-end build optimization workflow, asks to speed…
swiftui-whats-new-27
New SwiftUI APIs, behaviors, and deprecations introduced in the 2027 OS releases (iOS 27, macOS 27, watchOS 27, tvOS 27, visionOS 27). Use when a SwiftUI view using @State fails to compile with "used before being initialized", "invalid redeclaration of synthesized property", or "extraneous argument label" errors after…