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 agentmods add skills/serac-labs/serac/mobile-developmentnpx skills add serac-labs/serac --skill mobile-developmentgit clone --depth 1 https://github.com/serac-labs/seracWrote 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/serac-labs/serac/mobile-development)<a href="https://agentmods.dev/skills/serac-labs/serac/mobile-development"><img src="https://agentmods.dev/badge/skills/serac-labs/serac/mobile-development.svg" alt="Measured on agentmods" height="20"></a>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 | $0.00045 | $0.02860 |
| Opus 5 | $0.00023 | $0.01430 |
| Sonnet 5 | $0.00009 | $0.00572 |
| Haiku 4.5 | $0.00005 | $0.00286 |
Grade A, and why
mobile-development 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 4d 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.
How it starts
The opening of the file, as written. The whole thing — 468 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Mobile Development for ServiceNow
Mobile development enables native mobile experiences with offline capabilities.
Mobile Architecture
Mobile App Configuration
├── App Screens
│ ├── List Views
│ ├── Detail Views
│ └── Card Builders
├── Push Notifications
├── Offline Rules
└── Mobile Actions
Key Tables
| Table | Purpose |
|---|---|
sys_sg_mobile_app |
Mobile app configs |
sys_sg_screen |
Mobile screens |
sys_sg_card_builder |
Card builders |
sys_push_notification |
Push configs |
sys_sg_offline_rule |
Offline rules |
Mobile App Configuration (ES5)
Create Mobile App
// Create mobile app configuration (ES5 ONLY!)
var app = new GlideRecord("sys_sg_mobile_app")
app.initialize()
app.setValue("name", "IT Support")
app.setValue("description", "Mobile app for IT support tasks")
// App settings
app.setValue("active", true)
app.setValue("version", "1.0.0")
// Branding
app.setValue("primary_color", "#1976D2")
app.setValue("secondary_color", "#FFFFFF")
app.setValue("icon", "attachment_sys_id")
// Default screen
app.setValue("home_screen", homeScreenSysId)
// Roles
app.setValue("roles", "itil")
app.insert()
Configure Mobile Screen
// Create mobile screen (ES5 ONLY!)
var screen = new GlideRecord("sys_sg_screen")
screen.initialize()
screen.setValue("name", "My Incidents")
screen.setValue("mobile_app", mobileAppSysId)
screen.setValue("type", "list") // list, record, custom
// Data source
screen.setValue("table", "incident")
screen.setValue("filter", "assigned_to=javascript:gs.getUserID()^active=true")
// Display
screen.setValue("title", "My Incidents")
screen.setValue("icon", "list")
// Ordering
screen.setValue("order", 100)
screen.insert()
Card Builder (ES5)
Create Card Configuration
// Create card builder for list display (ES5 ONLY!)
var card = new GlideRecord("sys_sg_card_builder")
card.initialize()
card.setValue("name", "Incident Card")
card.setValue("table", "incident")
// Card layout
card.setValue("primary_field", "number")
card.setValue("secondary_field", "short_description")
card.setValue("tertiary_field", "priority")
// Additional fields
card.setValue(
"fields",
JSON.stringify([
{ field: "caller_id", label: "Caller" },
{ field: "state", label: "Status" },
{ field: "opened_at", label: "Opened" },
]),
)
// Visual indicators
card.setValue("color_field", "priority")
card.setValue(
"color_mapping",
JSON.stringify({
1: "#D32F2F", // Critical - Red
2: "#F57C00", // High - Orange
3: "#FBC02D", // Moderate - Yellow
4: "#388E3C", // Low - Green
5: "#1976D2", // Planning - Blue
}),
)
card.insert()
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.
- 4d ago First seen · 468 lines · 45 tokens per session scan A 71e0399edbe9
mobile-development is a skill published in the GitHub repository serac-labs/serac (78 stars, last pushed 9d ago), licensed Apache-2.0. It adds 45 tokens to every session and 2,860 once invoked, about $0.0002 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-08-30.
Other skills, from other repositories
responsive-design
Responsive (mobile + desktop) layout workflow. Use whenever a UI change must work on both phones and desktops, when implementing Figma frames that have separate mobile and desktop variants, or when reviewing a change for mobile parity.
heimdall
Work with an Apple App Store Connect account through Heimdall's MCP servers — App Store listings and metadata, TestFlight builds and testers, subscription and in-app-purchase prices, customer reviews, sales and analytics reports, certificates and provisioning profiles. Use this whenever the user asks about their app…
accessibility-compliance
Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.
contract-review-workflow
Trigger a deployed Mistral Workflow for contract review, poll execution status, detect human-in-the-loop checkpoints via workflowinteract(query), collect approval or changes, and resume the workflow via workflowinteract(signal). Use when the user wants to run a contract through a Mistral Workflow with oversight…
french-commit-message
Génère un message de commit git en français au format Conventional Commits à partir des changements stagés. Récupère automatiquement le diff via git diff --staged. À utiliser quand l'utilisateur demande un commit message, message de commit, ou résumé de diff en français.
device-control
Use when driving the user's Android device through devicecontrolstart, deviceui and deviceaction — opening apps, navigating screens, filling fields, or any multi-step flow through another app's UI.