本文へ移動
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(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

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-skills7902026年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-skills7902026年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-skills7902026年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-skills7902026年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-skills7902026年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-skills7902026年7月24日 更新

rshankras のスキルをすべて見る

このスキルの問題を報告する