跳到正文
cccskills
免费在 GitHub 公开

auth-flow

Generates authentication infrastructure with Sign in with Apple, biometrics, and Keychain storage. Use when user wants to add authentication, login, or Sign in with Apple.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(7)

  • SKILL.md4.9 KB
  • auth-patterns.md8.6 KB
  • templates/AuthenticationManager.swift6.3 KB
  • templates/BiometricAuthManager.swift5.1 KB
  • templates/KeychainManager.swift4.3 KB
  • templates/SignInWithAppleButton.swift3.3 KB
  • templates/SignInWithAppleManager.swift3.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Auth Flow Generator

Generate a complete authentication flow with Sign in with Apple, biometric authentication (Face ID/Touch ID), and secure Keychain storage.

When This Skill Activates

Use this skill when the user:

  • Asks to "add authentication" or "add login"
  • Mentions "Sign in with Apple" or "SIWA"
  • Wants "Face ID login" or "biometric auth"
  • Asks about "Keychain" or "secure storage"
  • Mentions "user session" or "auth token"

Pre-Generation Checks

1. Project Context Detection

  • Check for existing auth implementations
  • Check for AuthenticationServices framework usage
  • Verify entitlements file exists
  • Identify source file locations

2. Conflict Detection

Search for existing auth:

Glob: **/*Auth*.swift, **/*Keychain*.swift
Grep: "ASAuthorizationController" or "LAContext"

If found, ask user:

  • Replace existing implementation?
  • Extend with additional methods?

3. Required Capabilities

Sign in with Apple requires:

  • Add "Sign in with Apple" capability in Xcode
  • Configure in App Store Connect
  • Add entitlement: com.apple.developer.applesignin

Configuration Questions

Ask user via AskUserQuestion:

  1. Authentication methods? (multi-select)

    • Sign in with Apple
    • Biometrics (Face ID/Touch ID)
    • Both
  2. Session storage?

    • Keychain (secure, persists reinstall)
    • UserDefaults (simple, cleared on reinstall)
  3. Session management?

    • Auto-refresh tokens
    • Manual refresh
    • No token refresh needed

Generation Process

Step 1: Create Core Files

Generate these files:

  1. AuthenticationManager.swift - Core auth orchestration
  2. KeychainManager.swift - Secure storage
  3. SignInWithAppleManager.swift - SIWA handling
  4. BiometricAuthManager.swift - Face ID/Touch ID

Step 2: Create SwiftUI Components

Based on configuration:

  • SignInWithAppleButton.swift - SwiftUI button wrapper
  • AuthenticationView.swift - Complete auth UI

Step 3: Determine File Location

Check project structure:

  • If Sources/ exists → Sources/Auth/
  • If App/ exists → App/Auth/
  • Otherwise → Auth/

Entitlements Required

Sign in with Apple

<!-- YourApp.entitlements -->
<key>com.apple.developer.applesignin</key>
<array>
    <string>Default</string>
</array>

Keychain Sharing (optional)

<key>keychain-access-groups</key>
<array>
    <string>$(AppIdentifierPrefix)com.yourcompany.shared</string>
</array>

Info.plist Required

Face ID Usage Description

<key>NSFaceIDUsageDescription</key>
<string>Use Face ID to securely sign in to your account</string>

Output Format

After generation, provide:

Files Created

Sources/Auth/
├── AuthenticationManager.swift      # Core orchestration
├── KeychainManager.swift            # Secure storage
├── SignInWithAppleManager.swift     # SIWA delegate
├── BiometricAuthManager.swift       # Face ID/Touch ID
├── AuthenticationState.swift        # Auth state model
└── Views/
    ├── SignInWithAppleButton.swift  # SwiftUI button
    └── AuthenticationView.swift     # Complete UI

Integration Steps

App Entry Point:

@main
struct MyApp: App {
    @State private var authManager = AuthenticationManager()  // AuthenticationManager is @Observable

    var body: some Scene {
        WindowGroup {
            if authManager.isAuthenticated {
                ContentView()
            } else {
                AuthenticationView()
            }
        }
        .environment(authManager)
    }
}

Sign in with Apple Button:

SignInWithAppleButtonView { result in
    switch result {
    case .success(let user):
        print("Signed in: \(user.id)")
    case .failure(let error):
        print("Failed: \(error)")
    }
}

Biometric Auth:

Button("Unlock with Face ID") {
    Task {
        if await BiometricAuthManager.shared.authenticate() {
            // Authenticated
        }
    }
}

Required Setup

  1. Xcode Capabilities:

    • Add "Sign in with Apple" capability
    • Enable Keychain Sharing (if needed)
  2. App Store Connect:

    • Configure Sign in with Apple for your App ID
  3. Info.plist:

    • Add NSFaceIDUsageDescription

Testing Instructions

Sign in with Apple:

  • Use Simulator for basic testing
  • Test on device for full flow
  • Use sandbox Apple ID for testing

Biometrics:

  • Simulator: Features > Face ID > Enrolled
  • Test enrolled/not enrolled states
  • Test failed authentication

References

  • auth-patterns.md - Security best practices
  • templates/ - All template files
  • Apple Docs: Authentication Services, LocalAuthentication

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Run a structured accessibility audit on an iOS/macOS app — automated XCUITest audits, Accessibility Inspector, manual VoiceOver/Dynamic Type passes, and App Store Accessibility Nutrition Label evaluation. Use before release, when preparing Nutrition Label declarations, or for EU Accessibility Act compliance.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8132026年7月24日 更新

Generate accessibility infrastructure for VoiceOver, Dynamic Type, and accessibility features. Use when improving app accessibility, adding accessibility labels and hints, or auditing compliance.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8132026年7月24日 更新

Generates an Apple-compliant account deletion flow with multi-step confirmation UI, optional data export, configurable grace period, Keychain cleanup, and server-side deletion request. Use when user needs account deletion, right-to-delete, or Apple App Review compliance for account removal.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8132026年7月24日 更新

Privacy-preserving ad measurement with AdAttributionKit (SKAdNetwork's successor) — install and re-engagement attribution, conversion-value strategy under crowd anonymity, and end-to-end postback testing. Use when running paid acquisition beyond Apple Ads, measuring re-engagement campaigns, designing conversion values, or migrating from SKAdNetwork.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8132026年7月24日 更新

alarmkit

免费

AlarmKit integration for scheduling alarms and timers with custom UI, Live Activities, and snooze support. Use when implementing alarm or timer features in iOS 26+ apps.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8132026年7月24日 更新

Interpret app metrics and make data-driven decisions. Covers DAU/MAU, retention, LTV, ARPU, App Store Connect analytics, AARRR funnel analysis, cohort analysis, and diagnostic decision trees. Use when user wants to understand their metrics, diagnose problems, or build a data-driven growth plan.

中文简介正在准备中。当前显示原文说明。

rshankras/claude-code-apple-skills8132026年7月24日 更新

查看 rshankras 的全部技能

报告此技能的问题