Skip to content
cccskills
FreePublished on GitHub

firebase-auth-internal-app

Integrate Firebase Auth (authentication + domain restriction) into internal applications. Includes domain restriction via Blocking Functions and user registration to Firestore.

The English summary is being prepared. Showing the original description.

Works withFirebase
See how to install

Files included (4)

  • SKILL.md3.7 KB
  • references/blocking_functions.md2.3 KB
  • references/custom_claims.md1.4 KB
  • references/security_rules.md2.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Integrate Firebase Authentication into an internal application. Implement the following components.

Prerequisites

  • A Firebase project has been created
  • Firebase CLI is installed and logged in
  • Firestore is enabled
  • The firebase-auth-basics skill is available

Implementation

1. Authentication Setup

Follow the firebase-auth-basics skill to:

  1. Use AskUserQuestion to ask the user which authentication method to use
  2. Provision the selected authentication method (firebase.json configuration or manual setup via Firebase Console)
  3. Implement client-side authentication (initialization, sign-in, auth state monitoring, sign-out)

Refer to firebase-auth-basics for all authentication method options, provisioning steps, and client SDK implementation examples.

For non-web platforms (iOS / Android / Flutter / Unity, etc.), fetch the relevant platform information from the official documentation at https://firebase.google.com/docs/auth.

2. Domain Restriction via Blocking Functions

Implement based on references/blocking_functions.md.

Using beforeUserCreated, implement the following:

  • Determine the domain from the user's email address
  • If the domain is allowed, register user information in the Firestore users collection
  • If the domain is not allowed, return an error to reject sign-in
  • Set the initial role in Custom Claims via the return value (return { customClaims: ... }), so it is included in the ID token from the first sign-in

Use AskUserQuestion to ask the user for the allowed email domain(s) (e.g., example.com). For multiple domains, ask for comma-separated input.

Also confirm the following:

  • Fields to store in the users collection (default: email, role, createdAt)

3. Permission Management via Custom Claims

Implement based on references/custom_claims.md.

Use onDocumentWritten to monitor changes to users/{id} documents and sync permission information to Custom Claims:

  • Initial claims are set by the beforeUserCreated return value (section 2); this trigger handles subsequent updates only
  • When the permission field in a users document is updated, reflect it in the ID token via setCustomUserClaims
  • On the client side, Custom Claims in the token can be used for permission control

Default role values:

  • admin: Administrator
  • user: Regular user
  • pending: Pending approval
  • deleted: Deleted

The initial role for users who pass domain restriction is user. Confirm the following with the user:

  • The permission field name to store in Custom Claims (default: role)
  • Whether to customize the role types (default: admin, user, pending, deleted)

4. Firestore Security Rules

Implement based on references/security_rules.md.

Define helper functions isUser() and isAdmin() based on the role Custom Claim, and set up security rules for the users collection as a minimum.

The application's other collections should also use isUser() and isAdmin() for access control.

Notes

  • If any prerequisites are not met, notify the user which ones are missing before proceeding
  • Always confirm environment-specific values such as allowed domains and app name with the user before setting them
  • Blocking Functions use Cloud Functions for Firebase (2nd gen)
  • Writing to the users collection uses the firebase-admin SDK (server-side)

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

chrome-devtools-mcp の CLI (`chrome-devtools`) を使ったブラウザ操作の総合スキル。既存ブラウザへの attach / 使い捨てテストブラウザ / ログイン状態を保持する永続プロファイルのいずれかをユーザーに必ず確認した上でサーバを立ち上げ、スナップショット取得・クリック・入力・ナビゲーション・スクショ・ネットワーク監視などを行う。

The English summary is being prepared. Showing the original description.

tanabee/skills3Updated Oct 17, 2026

checklist の「UI 撮影台本」に沿って UI のスクリーンショットを撮影し、前後比較(compare.html)用の before / after 素材を保存する。「実装前の UI を撮っておいて」「after のスクショを撮って」などの依頼で発火する。

The English summary is being prepared. Showing the original description.

tanabee/skills3Updated Oct 17, 2026

Read and analyze log entries from Cloud Logging using the gcloud CLI.

The English summary is being prepared. Showing the original description.

tanabee/skills3Updated Oct 17, 2026

Codex 公式プラグイン (codex-plugin-cc) のネイティブレビューでコードレビューを実施する。PR 番号指定時は PR を、無指定時は現在ブランチとベースブランチの差分をレビューする。

The English summary is being prepared. Showing the original description.

tanabee/skills3Updated Oct 17, 2026

copy

Free

指定された内容をクリップボードにコピーするスキル。ファイルパスならその中身を、テキストならそのまま、会話中の直前の出力(コマンド結果・生成コード・URL など)を指す場合はその内容を pbcopy でコピーする。ユーザーが「コピーして」「クリップボードに入れて」などコピーの意図を示したら必ず使用する。

The English summary is being prepared. Showing the original description.

tanabee/skills3Updated Oct 17, 2026

GitHub issue から PR のタイトルと説明文を作成する。

The English summary is being prepared. Showing the original description.

tanabee/skills3Updated Oct 17, 2026

See all skills by tanabee

Report a problem with this skill