ソース情報
- リポジトリ
- tools-only/X-Skills
- ソースの最終更新活動
- 2026年2月9日 04:08
- 検出された SKILL.md の言語
- 英語
- スター
- 7
- フォーク
- 1
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/tools-only/X-Skills --skill firestore-setupコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
Index of Build Systems Skills
Coordination patterns for distributed dataflow systems including barriers, epochs, and distributed snapshots
Windowing, sessionization, time-series aggregation, and late data handling for streaming systems
SOC 職業分類に基づく
SKILL.md を表示中
| name | firestore-setup |
| description | Initialize Firebase Admin SDK, configure Firestore, and setup A2A/MCP... |
| model | sonnet |
Initialize Firebase Admin SDK in your project with support for:
Set up Firebase Admin SDK with proper configuration for both regular users and AI agents. Guide the user through:
First, check if Firebase is already configured:
# Check if firebase-admin is installed
npm list firebase-admin
# Check for existing Firebase initialization
grep -r "firebase-admin" .
# Check for service account credentials
ls -la *.json | grep -i firebase
If Firebase is already set up, ask the user if they want to reconfigure.
# Install firebase-admin
npm install firebase-admin
# For A2A/MCP integration, also install:
npm install @google-cloud/firestore
npm install dotenv # For environment variables
Ask the user:
Option A: Download from Firebase Console
1. Go to https://console.firebase.google.com
2. Select your project
3. Settings (gear icon) → Project Settings → Service Accounts
4. Click "Generate new private key"
5. Save JSON file to your project (e.g., serviceAccountKey.json)
Option B: Use existing GCP credentials
# If using Google Cloud SDK
gcloud auth application-default login
Option C: Environment variable (production)
# Set environment variable
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/serviceAccountKey.json"
Create src/firebase.js (or src/firebase.ts for TypeScript):
const admin = require('firebase-admin');
// Initialize Firebase Admin SDK
if (!admin.apps.length) {
// Option 1: Using service account key file
const serviceAccount = require('../serviceAccountKey.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: `https://${serviceAccount.project_id}.firebaseio.com`
});
// Option 2: Using environment variable (recommended for production)
// admin.initializeApp({
// credential: admin.credential.applicationDefault(),
// projectId: process.env.FIREBASE_PROJECT_ID
// });
}
const db = admin.firestore();
// Export for use in other files
module.exports = { admin, db };
For TypeScript:
import * as admin from 'firebase-admin';
if (!admin.apps.length) {
const serviceAccount = require('../serviceAccountKey.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: `https://${serviceAccount.project_id}.firebaseio.com`
});
}
export const db = admin.firestore();
export { admin };
Create a test script to verify Firestore works:
const { db } = require('./src/firebase');
async function testFirestore() {
try {
// Test write
const testRef = await db.collection('_test').add({
message: 'Firebase connected successfully!',
timestamp: admin.firestore.FieldValue.serverTimestamp()
});
console.log('✅ Write successful. Document ID:', testRef.id);
// Test read
const doc = await testRef.get();
console.log('✅ Read successful. Data:', doc.data());
// Clean up test document
await testRef.delete();
console.log('✅ Delete successful');
console.log('\n🎉 Firebase is configured correctly!');
} catch (error) {
console.error('❌ Error:', error.message);
process.exit(1);
}
}
();
Run the test:
node test-firestore.js
If the user needs A2A or MCP integration, create additional configuration:
A. Create A2A configuration file (src/a2a-config.js):
const { db } = require('./firebase');
// A2A Framework Configuration
const A2A_CONFIG = {
collections: {
sessions: 'agent_sessions',
memory: 'agent_memory',
tasks: 'a2a_tasks',
messages: 'a2a_messages',
logs: 'agent_logs'
},
serviceAccounts: [
'mcp-server@project-id.iam.gserviceaccount.com',
'agent-engine@project-id.iam.gserviceaccount.com'
],
sessionTTL: 3600, // 1 hour in seconds
messageTTL: 86400, // 24 hours
rateLimits: {
maxRequestsPerMinute: 100,
maxConcurrentSessions: 50
}
};
// Initialize A2A collections
async function initializeA2ACollections() {
const collections = Object.values(A2A_CONFIG.collections);
for (const collection of collections) {
const ref = db.collection(collection);
// Create initial document to establish collection
await ref.doc().({
: ,
: ()
});
.();
}
}
. = { , initializeA2ACollections };
B. Create MCP service integration (src/mcp-service.js):
const { db } = require('./firebase');
const { A2A_CONFIG } = require('./a2a-config');
class MCPService {
constructor(serviceAccountEmail) {
this.serviceAccountEmail = serviceAccountEmail;
this.db = db;
}
// Create a new agent session
async createSession(sessionData) {
const sessionRef = this.db.collection(A2A_CONFIG.collections.sessions).doc();
await sessionRef.set({
...sessionData,
agentId: this.serviceAccountEmail,
status: 'active',
createdAt: admin.firestore.FieldValue.serverTimestamp(),
expiresAt: new Date(Date.now() + A2A_CONFIG.sessionTTL * 1000)
});
return sessionRef.id;
}
// Store agent memory/context
() {
contextRef = .
.(..)
.(.)
.()
.(sessionId);
contextRef.({
...contextData,
: .,
sessionId,
: admin...()
});
}
() {
..(..).({
: .,
: toAgent,
payload,
: admin...(),
:
});
}
() {
snapshot = .
.(..)
.(, , .)
.(, , )
.(, )
.();
messages = [];
batch = ..();
snapshot.( {
messages.({ : doc., ...doc.() });
batch.(doc., { : });
});
batch.();
messages;
}
() {
..(..).({
: .,
activity,
level,
: admin...()
});
}
}
. = { };
C. Create Cloud Run service integration (src/cloudrun-service.js):
const { db } = require('./firebase');
class CloudRunService {
constructor() {
this.db = db;
}
// Log API requests from Cloud Run
async logRequest(endpoint, method, userId, metadata = {}) {
await this.db.collection('api_requests').add({
endpoint,
method,
userId,
metadata,
timestamp: admin.firestore.FieldValue.serverTimestamp()
});
}
// Store API response
async storeResponse(requestId, responseData) {
await this.db.collection('api_responses').doc(requestId).set({
...responseData,
timestamp: admin.firestore.FieldValue.serverTimestamp()
});
}
// Get user data for Cloud Run service
async getUserData(userId) {
const doc = await this.db.collection('users').(userId).();
(!doc.) {
();
}
doc.();
}
}
. = { };
Create .env file:
# Firebase Configuration
GOOGLE_APPLICATION_CREDENTIALS=./serviceAccountKey.json
FIREBASE_PROJECT_ID=your-project-id
# A2A Configuration (if applicable)
MCP_SERVICE_ACCOUNT_EMAIL=mcp-server@project-id.iam.gserviceaccount.com
AGENT_ENGINE_SERVICE_ACCOUNT=agent-engine@project-id.iam.gserviceaccount.com
# Cloud Run Configuration (if applicable)
CLOUD_RUN_SERVICE_URL=https://your-service-abc123-uc.a.run.app
Add to .gitignore:
serviceAccountKey.json
.env
Ask if the user wants to deploy initial security rules:
# Install Firebase CLI
npm install -g firebase-tools
# Login
firebase login
# Initialize Firestore rules
firebase init firestore
Then use the firestore-security-agent to generate appropriate rules based on their use case.
Create examples/firestore-usage.js:
const { db, admin } = require('../src/firebase');
// Example 1: Basic CRUD
async function basicCRUD() {
// Create
const docRef = await db.collection('users').add({
name: 'John Doe',
email: '[email protected]',
createdAt: admin.firestore.FieldValue.serverTimestamp()
});
// Read
const doc = await docRef.get();
console.log('User data:', doc.data());
// Update
await docRef.update({
name: 'John Updated',
updatedAt: admin.firestore.FieldValue.serverTimestamp()
});
// Delete
await docRef.delete();
}
// Example 2: Queries
async function queryExamples() {
// Simple query
const activeUsers = await db.collection()
.(, , )
.()
.();
activeUsers.( {
.(doc., doc.());
});
recentOrders = db.()
.(, , )
.(, , )
.(, )
.()
.();
}
() {
batch = db.();
( i = ; i < ; i++) {
ref = db.().();
batch.(ref, {
: ,
: admin...()
});
}
batch.();
.();
}
() {
{ } = ();
mcp = ();
sessionId = mcp.({
: ,
:
});
mcp.(sessionId, {
: ,
:
});
mcp.(
,
{ : , : { : } }
);
mcp.(, );
}
. = { basicCRUD, queryExamples, batchOperations, a2aExample };
Verify the following after setup:
.gitignore includes serviceAccountKey.json and .envTell the user:
node test-firestore.jsexamples/firestore-usage.js/firestore-security-agent to generate rules/firebase-operations-agent for CRUD operationsnpm install firebase-adminCongratulations! Your Firestore setup is complete! 🎉