evanca/firebase-app-check
Use when implementing app attestation, configuring App Check providers, setting up debug tokens, enabling backend enforcement, or managing token refresh.
npx skills add https://github.com/evanca/flutter-ai-rules --skill firebase-app-check
This skill defines how to correctly implement Firebase App Check in Flutter applications, covering provider selection, debug configuration, enforcement rollout, and security hardening.
Use this skill when:
flutter pub add firebase_app_check
import 'package:firebase_app_check/firebase_app_check.dart';
Initialize App Check after Firebase.initializeApp() and before using any Firebase services:
await Firebase.initializeApp();
await FirebaseAppCheck.instance.activate(
webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'),
androidProvider: AndroidProvider.playIntegrity,
appleProvider: AppleProvider.deviceCheck,
);
Android:
| Provider | Use case |
|---|---|
| AndroidProvider.playIntegrity | Production (default) |
| AndroidProvider.debug | Development / CI only |
Apple (iOS / macOS):
| Provider | Use case |
|---|---|
| AppleProvider.deviceCheck | Production default (iOS 11+, macOS 10.15+) |
| AppleProvider.appAttest | Enhanced security (iOS 14+, macOS 14+) |
| AppleProvider.appAttestWithDeviceCheckFallback | App Attest with Device Check fallback |
| AppleProvider.debug | Development / CI only |
Web:
| Provider | Use case |
|---|---|
| ReCaptchaV3Provider | Standard reCAPTCHA v3 |
| ReCaptchaEnterpriseProvider | Enhanced with additional features |
> Android note: For certain Android devices, enable "Meets basic device integrity" in the Google Play console to ensure proper App Check functionality.
Use debug providers during development to run in emulators or CI environments:
await Firebase.initializeApp();
await FirebaseAppCheck.instance.activate(
androidProvider: AndroidProvider.debug,
appleProvider: AppleProvider.debug,
);
iOS: Enable debug logging by adding -FIRDebugEnabled to Arguments Passed on Launch in Xcode. The debug token appears in the console output.
Android: The debug token prints to logcat on first run. Filter by DebugAppCheckProvider.
Web: Set self.FIREBASE_APPCHECK_DEBUG_TOKEN = true; in web/index.html before Firebase scripts load.
FirebaseAppCheck.instance.onTokenChange.listen((token) {
// Attach token to custom backend requests
// e.g., set as Authorization header
});
Follow this sequence to avoid disrupting legitimate users:
// Node.js Admin SDK example for verifying App Check tokens
const appCheckToken = req.header('X-Firebase-AppCheck');
const appCheckClaims = await getAppCheck().verifyToken(appCheckToken);
Take evanca/firebase-app-check from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.