agentsclimarketplace

Firebase

Skill tuannv14/claude-team-toolkit/skills/firebase

Use when user references Firebase, console.firebase.google.com URLs, *.firebaseapp.com, *.web.app links, or asks for Remote-Config/App-Distribution/Crashlytics-dSYM/Cloud-Functions/Hosting ops. Multi-project via FIREBASE_PROFILE.From its SKILL.md

Install
npx -y skills add tuannv14/claude-team-toolkit --skill firebase

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • reads credentialsReads from 2 credential sources: `~/.firebase/credentials` and 1 more.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 3 commands, including `source "$HOME/.claude-team-toolkit/lib/credentials.sh"` and 2 more.

SKILL.md

4.5 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

/firebase — Firebase CLI (multi-project)

Wraps firebase CLI with profile-based project switching. Each profile pins project ID + service account JSON + default app IDs. Profile resolution: --profileFIREBASE_PROFILE~/.firebase/active_profile[default].

Overview

Profile-based project switching, so commands target the right env without explicit flags. Service Account auth (least privilege per env), never firebase login token (which carries Owner role).

When to Use

  • Push Remote Config (rollouts to production users)
  • Distribute beta builds via App Distribution (testers groups)
  • Upload Crashlytics dSYM / Proguard mapping (mandatory for readable prod stacks)
  • Deploy Cloud Functions, manage Hosting channels (preview URLs)

When NOT to Use

  • Firebase web/mobile client SDK → that's the SDK in your app, not this skill
  • Firestore data ops → use Firestore SDK or Admin SDK in code
  • Auth flows → SDK in app, not CLI
  • Project setup / billing → Firebase Console UI

Profile config

~/.firebase/credentials (mode 600):

[default]
project_id     = my-app-dev
service_account = /Users/me/.firebase-keys/dev-sa.json
ios_app_id     = 1:123456789012:ios:abc123
android_app_id = 1:123456789012:android:def456

[prod]
project_id     = my-app-prod
service_account = /Users/me/.firebase-keys/prod-sa.json
ios_app_id     = 1:222222222222:ios:zzz
android_app_id = 1:222222222222:android:www
require_confirm = true

Get SA key (least privilege):

  1. Firebase Console → ⚙ Project Settings → Service Accounts
  2. Generate new private key → download JSON
  3. Don't use default SA — create dedicated with only needed roles (e.g., Firebase App Distribution Admin for beta only)
  4. Save to ~/.firebase-keys/<env>-sa.json, chmod 600

Why SA over firebase login: SA scoped to roles, revocable, no human auth flow. CI/automation always uses SA. firebase login writes a token with full user permissions (often Owner role).

Helpers

Shared profile/INI/ctt_* pattern reference: profiles-and-credentials.

source "$HOME/.claude-team-toolkit/lib/credentials.sh"
source "$HOME/.claude-team-toolkit/lib/confirm.sh"
ctt_load_creds firebase "$PROFILE"

firebase_run() wrapper and full dispatch implementations live in recipes.md — load when user invokes a specific verb.

Verb areaMutating?Confirm
projects, apps, currentno
rc-getno
rc-set, rc-rollbackyestyped PUSH / ROLLBACK
dist-upload, dist-testers add|removeyesctt_audit_log
crashlytics:symbols:upload, crashlytics:mappingfile:uploadadditive
fn-deployyesctt_confirm if profile require_confirm
hosting deploy, hosting channel:deployyesctt_audit_log

Reference files (load on demand)

  • recipes.md — full firebase CLI invocations for every verb above (Remote Config push/rollback, App Distribution upload + tester management, Crashlytics symbol upload, Functions deploy + logs, Hosting deploy + preview channels). Load when user invokes a specific dispatch verb.

Common Mistakes

  • Using default service account → over-privileged. Create dedicated SA per role.
  • Forgetting dSYM upload → crash stacks unreadable in prod
  • firebase login token instead of SA → has Owner role, blast radius huge
  • Wrong project (default vs prod) → check --project resolves correctly
  • 401/403 → SA missing role; check IAM in GCP console
  • Pushing Remote Config without checking current live version first → unintended user impact

Safety

  • SA JSON is the most powerful credential — never commit. chmod 600.
  • Per-environment SA — dev/staging/prod must be SEPARATE SAs.
  • Least privilege roles: avoid Owner/Editor for automation. Beta dist only → Firebase App Distribution Admin. RC only → Firebase Remote Config Admin.
  • require_confirm=true on prod profiles for every deploy.
  • dSYM/mapping uploads non-destructive — safe to automate.
  • Functions delete intentionally not in skill — use Console (forces conscious action).
  • 401/403 → SA missing role; check IAM in GCP console.

What ships with it: 1 file

3.2 KB alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.