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 lh17708357536-gif/flutter-cn-overseas-app-skills --skill social-logingit clone --depth 1 https://github.com/lh17708357536-gif/flutter-cn-overseas-app-skillsWrote 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/lh17708357536-gif/flutter-cn-overseas-app-skills/social-login)<a href="https://agentmods.dev/skills/lh17708357536-gif/flutter-cn-overseas-app-skills/social-login"><img src="https://agentmods.dev/badge/skills/lh17708357536-gif/flutter-cn-overseas-app-skills/social-login/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/lh17708357536-gif/flutter-cn-overseas-app-skills/social-login"><img src="https://agentmods.dev/badge/skills/lh17708357536-gif/flutter-cn-overseas-app-skills/social-login.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00153 | $0.04151 |
| Opus 5 | $0.00077 | $0.02076 |
| Sonnet 5 | $0.00031 | $0.00830 |
| Haiku 4.5 | $0.00015 | $0.00415 |
Grade A, and why
social-login 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 12d 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 — 280 lines — stays where its author put it; the contents beside it link to each section on GitHub.
多区域第三方登录 Skill
覆盖中国(微信/QQ)+ 海外(Apple/Google)+ 手机号/邮箱兜底。所有
<PLACEHOLDER>替换为项目实际值。铁律先行:
- ★ 一切三方凭证都必须服务端验签——客户端拿到的 token/code 只是"待验证凭据",绝不能信客户端自报的 userId / openid。
- ★ 登录 ≠ 支付——微信/QQ 的登录和支付是两套 scope / 两套开放平台配置,别混。
- ★ 登录是 user 级、不是 tenant 级——一个账号登录后再按既有规则解析默认租户(
~/.claude/skills/_shared/rules.md§4)。
1. ★ Flavor 感知的登录方式矩阵
| flavor | 提供的登录方式 | 禁止 |
|---|---|---|
| cn_android | 微信 / QQ / 手机号(短信验证码) | ❌ Apple / Google(国内不可用/无意义) |
| overseas_android | Google / Apple(可选) / 邮箱 | ❌ 微信 / QQ(海外无生态 + Play 合规) |
| iOS | ★ Apple Sign In(见 §7 合规)+ 微信(国区用户) + Google(海外用户) + 手机号/邮箱 | 单包按 region/locale 决定展示哪些 |
代码层:登录方式也走工厂(对应 flutter-coding-conventions §18),按 flavor + region 返回可用 provider 列表:
// lib/core/config/auth_provider_factory.dart
List<LoginMethod> availableLoginMethods() {
final f = FlavorConfig.current;
switch (f) {
case Flavor.cnAndroid: return [LoginMethod.wechat, LoginMethod.qq, LoginMethod.phone];
case Flavor.overseasAndroid:return [LoginMethod.google, LoginMethod.apple, LoginMethod.email];
case Flavor.ios: return _iosMethodsByRegion(); // 见 §7,含 Apple 兜底
}
}
★ 顶层禁止直接 import 平台登录包(
google_sign_in/tencent_kit),只在工厂内条件构造,否则 cn 包会打入 Google native lib(对应flutter-testing§6.2 守卫)。
2. 统一后端账号模型(一次设计,四端复用)
一个用户可绑定多个第三方身份;用 SocialIdentity 表把 provider 身份挂到 User:
model SocialIdentity {
id String @id @default(uuid())
userId String @map("user_id")
provider String // apple | google | wechat | qq
providerUid String @map("provider_uid") // Apple sub / Google sub / 微信 openid / QQ openid
unionId String? @map("union_id") // ★ 微信/QQ 跨应用聚合(开放平台 unionId)
email String?
nickname String?
avatarUrl String? @map("avatar_url")
createdAt DateTime @default(now()) @map("created_at")
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([provider, providerUid]) // ★ 同 provider 同 uid 唯一
@@index([unionId]) // 按 unionId 聚合同一自然人
@@index([userId])
@@map("social_identities")
}
铁律:
- ★
SocialIdentity是 user 级,不带 tenantId(登录发生在选租户之前) - ★
@@unique([provider, providerUid])防同一第三方账号被绑到两个 user - ★ 微信/QQ 优先用 unionId 认人(同主体旗下多 app 共享),openid 仅单 app 内唯一
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.
- 12d ago First seen · 280 lines · 0 tokens per session scan A 3f2d23d3a523
social-login is a skill published in the GitHub repository lh17708357536-gif/flutter-cn-overseas-app-skills (20 stars, last pushed 2mo ago), licensed MIT. It adds 153 tokens to every session and 4,151 once invoked, about $0.0008 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
app-store-preflight-compliance
Pre-submission compliance scanner workflow for Apple App Store apps. Use when reviewing iOS, macOS, tvOS, watchOS, or visionOS projects (Swift, Objective-C, React Native, Expo) for App Store rejection risks, submission readiness, privacy compliance, or guideline violations.
maui-networking-offline-data
Build MAUI networking and offline data. USE FOR: typed HttpClient, JSON serialization, Android 10.0.2.2, iOS simulator localhost, LAN/dev-tunnel fallback, debug cleartext, offline-first screens, SQLite/EF Core sync metadata, queues, encryption decisions, retries, cancellation. DO NOT USE FOR: auth redirects, Aspire…
maui-aspire-client
Connect MAUI apps to Aspire-hosted APIs. USE FOR: AddServiceDiscovery, typed HttpClient, https+http://apiservice, missing AppHost config on devices, Android emulator 10.0.2.2, iOS simulator localhost, physical-device LAN/dev-tunnel fallbacks, dev certs, Bearer handlers, debug-only cleartext. DO NOT USE FOR: offline…
cloudkit-sync
Generate CloudKit sync infrastructure using CKSyncEngine with conflict resolution, sharing, and account monitoring. Use when adding iCloud sync to an iOS/macOS app.
offline-queue
Generates an offline operation queue with persistence, automatic retry on connectivity, and conflict resolution. Use when user needs offline-first behavior, queued mutations, or pending operations that sync when back online.
push-notifications
Generate push notification infrastructure with APNs registration, handling, and rich notifications. Use when adding push notifications, configuring APNs, notification categories/actions, or rich notifications with images and custom UI.