firebase
안전한 Firebase 앱 구축하기
Firebase 는 백엔드 개발을 간소화하지만, 보안 규칙과 데이터 모델링은 위반과 비용 초과를 피하기 위해 전문 지식이 필요합니다. 이 스킬은 Firebase 모범 사례에 대한 전문가 가이드를 제공합니다.
스킬 ZIP 다운로드
Claude에서 업로드
설정 → 기능 → 스킬 → 스킬 업로드로 이동
토글을 켜고 사용 시작
테스트해 보기
"firebase" 사용 중입니다. 'tasks' 컬렉션에 대한 보안 규칙을 생성하세요. 팀 멤버는 모든 작업을 읽을 수 있지만 자신의 작업만 수정할 수 있습니다
예상 결과:
rules version 2;
service cloud.firestore {
match /databases/{database}/documents {
match /tasks/{taskId} {
allow read: if request.auth != null;
allow write: if request.auth.uid == resource.data.ownerId;
}
}
}
"firebase" 사용 중입니다. Firestore 에서 방과 메시지가 있는 채팅 애플리케이션을 어떻게 모델링해야 하나요?
예상 결과:
권장 구조:
- rooms/{roomId}: { name, createdAt, memberIds[] }
- rooms/{roomId}/messages/{messageId}: { text, senderId, sentAt }
주요 결정 사항:
1. 메시지를 위한 서브컬렉션은 방 문서를 작게 유지
2. 권한 확인을 위한 memberIds 비정규화
3. 문서 ID 가 아닌 sentAt 을 사용하여 정렬
보안 감사
안전Static analysis flagged external_commands and weak_crypto patterns, but manual review confirms these are false positives. The backtick syntax on line 57 is markdown code formatting, not shell execution. The cryptographic algorithm flags on lines 3, 15, 39, 45, 60 are triggered by generic words like 'security' and 'design', not actual weak crypto usage. This is a legitimate Firebase development skill with no security issues.
중간 위험 문제 (2)
품질 점수
만들 수 있는 것
새로운 Firestore 데이터베이스 보안 설정
적절한 읽기/쓰기 권한을 가진 사용자 소유 데이터 컬렉션을 위한 프로덕션 준비 완료 보안 규칙 생성
소셜 앱 데이터 모델링
게시물, 댓글 및 좋아요가 있는 소셜 피드를 위한 Firestore 컬렉션 및 쿼리 설계
로컬 개발 환경 설정
프로덕션에 배포하지 않고 Auth, Firestore 및 Functions 를 테스트할 수 있도록 Firebase Emulators 구성
이 프롬프트를 사용해 보세요
'users' 라는 컬렉션에 대한 Firestore 보안 규칙을 생성하세요. 사용자는 자신의 문서만 읽고 쓸 수 있어야 합니다
게시물, 댓글 및 좋아요가 있는 블로그를 위한 Firestore 데이터 모델을 설계하세요. 컬렉션 구조와 예시 문서를 보여주세요
Authentication 에서 새 사용자가 생성될 때 트리거되어 Firestore 에 기본 프로필 문서를 생성하는 Firebase Cloud Function 을 작성하세요
이 Firestore 쿼리 패턴을 검토하고 읽기 비용을 줄이기 위한 최적화 방법을 제안하세요: collection('posts').where('author', '==', userId).get()모범 사례
- 항상 관계가 아닌 쿼리 패턴을 중심으로 데이터 모델을 설계하세요
- 프로덕션에 컬렉션을 배포하기 전에 항상 보안 규칙을 작성하세요
- 모든 개발 및 CI 테스트에 Firebase Emulators 를 사용하세요
피하기
- 클라이언트 측 유효성 검사만 의존하고 보안 규칙을 생략하는 것
- Firestore 를 깊은 중첩을 가진 관계형 데이터베이스처럼 모델링하는 것
- 페이지네이션 또는 제한 없이 전체 컬렉션에 리스너를 연결하는 것