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 Xopoko/build-swift-apps --skill appstore-metadata-syncgit clone --depth 1 https://github.com/Xopoko/build-swift-appsWrote 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/xopoko/build-swift-apps/appstore-metadata-sync)<a href="https://agentmods.dev/skills/xopoko/build-swift-apps/appstore-metadata-sync"><img src="https://agentmods.dev/badge/skills/xopoko/build-swift-apps/appstore-metadata-sync/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.
<a href="https://agentmods.dev/skills/xopoko/build-swift-apps/appstore-metadata-sync"><img src="https://agentmods.dev/badge/skills/xopoko/build-swift-apps/appstore-metadata-sync.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00051 | $0.00493 |
| Opus 5 | $0.00026 | $0.00246 |
| Sonnet 5 | $0.00010 | $0.00099 |
| Haiku 4.5 | $0.00005 | $0.00049 |
Grade A, and why
appstore-metadata-sync 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 9d 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.
What it actually says
App Store Metadata Sync
Prefer canonical asc metadata JSON for app-info and version fields. Use .strings or fastlane flows only when specifically needed.
Use appstore-metadata-localizer when the main work is translation/adaptation across locales. Use appstore-release-notes-writer for What's New copy. Use appstore-subscription-localizer for subscription, group, or IAP display-name localizations.
Command Plan Helper
For a deterministic dry-run command plan, run the helper from the plugin root:
python3 "$PLUGIN_ROOT/skills/appstore-metadata-sync/scripts/metadata_sync_plan.py" \
--app "APP_ID" --version "1.2.3" --platform IOS --dir "./metadata" \
--app-info "APP_INFO_ID" --version-id "VERSION_ID" \
--include-keywords --keywords-csv "./keywords.csv"
The helper prints commands only; it does not call ASC, mutate metadata, or read credentials. Pass --json for machine-readable output. Pass --confirming-actions only after manually verifying generated --confirm commands.
Workflow
- Pull canonical metadata JSON into
./metadatabefore editing unless the user already provided a fresh metadata tree. - Resolve
APP_INFO_IDwhen multiple app-info records exist. - Edit the owning JSON fields: app-info fields for name/subtitle/privacy text and version fields for description, keywords, marketing URL, promotional text, support URL, and What's New.
- Validate locally, then run
push --dry-run; apply/push without dry-run only after the diff and target app/version are confirmed. - Use alternate
.stringsor fastlane migration flows only for legacy repos or explicit user requests.
Limits: name/subtitle 30, keywords 100, description/What's New 4000, promotional text 170. Use table output for human verification and JSON for automation.
References
references/appstore-metadata-sync.mdfor detailed canonical JSON, keyword, quick-edit,.strings, and fastlane commands.
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 9d ago First seen · 38 lines · 51 tokens per session scan A 6f53bb08bd19
appstore-metadata-sync is a skill published in the GitHub repository Xopoko/build-swift-apps (45 stars, last pushed 12d ago), licensed MIT. It adds 51 tokens to every session and 493 once invoked, about $0.0003 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
firebase-messaging
Use when setting up Firebase Cloud Messaging, managing permissions and tokens, handling background/foreground notification taps, or dispatching messages server-side (HTTP v1).
flutter-app-architecture
Use when scaffolding a project, refactoring into layers, creating view models/repositories, configuring dependency injection, or implementing unidirectional data flow (MVVM).
generate-images-with-firebase-ai
Use when generating or editing images from Flutter/Dart with Firebase AI Logic and a Gemini image model (Nano Banana), making the first call work, choosing Gemini Developer API vs Vertex AI, hitting quota, billing or App Check failures, getting empty or image-only responses, sending a user photo as input, controlling…
firebase-app-check
Use when implementing app attestation, configuring App Check providers, setting up debug tokens, enabling backend enforcement, or managing token refresh.
firebase-crashlytics
Use when implementing crash reporting, capturing fatal/non-fatal errors, recording isolate/async exceptions, customizing reports, or uploading obfuscated symbols.
firebase-ai
Use when setting up firebaseai, generating text/chat with Gemini, streaming AI output, building multimodal prompts, or handling AI errors.