SkillAgentSearch skills...

Ga-mg

- [Vector Similarity Search](#vector-similarity-search) - [Full-Text Search](#full-text-search) - [Cloud Functions Integration](#cloud-functions-integration) - [Data Seeding & Bulk Operations](#data-seeding--bulk-operations)

Install / Use

npx skills add romeytheAI/Ga-mg

Installs into whichever agent you are using.

About this skill
♊

Gemini Rules

Gemini CLI config

Quality Score

69/100

Supported Platforms

Gemini CLI

Tags

Our assessment of Ga-mg

Ga-mg scores 69/100 on our quality scale, 3845th of 4,632 Development & Engineering skills we index.

Its Gemini Rules is 7.2 KB long, well organised into 28 sections with 16 code examples: a thorough specification that gives an agent plenty to work with.

It has no GitHub stars yet, so there is no community track record; judge it on its content.

Substance
29/30
Structure
20/20
Description
15/15
Adoption
0/20
Freshness
5/15

Maintenance, license and trust

  • We could not determine when the repository was last updated.
  • Our last check on 2026-10-21 found the source still online.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

Ga-mg compared with similar skills

All 4 of these similar skills score higher than Ga-mg; compare them before choosing.

SkillScoreStarsUpdatedFormat
Ga-mg (this skill)by romeytheAI690—Gemini Rules
taste-skillby Leonxlnx100111.4k2d agoCLAUDE.md
ai-job-searchby ai-job-search-dev10070.2k1d agoCLAUDE.md
claude-howtoby luongnv8910046.7k4d agoCLAUDE.md
lobehubby lobehub10084.3ktodayMCP Server

Frequently asked questions

How do I install Ga-mg?
Run npx skills add romeytheAI/Ga-mg. The install tabs above show the steps for each supported agent.
Which AI agents does Ga-mg work with?
It is written for Gemini CLI, as a Gemini Rules file. Other agents that read the same format can often use it too.
Is Ga-mg safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is Ga-mg still maintained?
We could not determine when the repository was last updated.

Advanced Features Reference

Contents


Vector Similarity Search

Semantic search using Vertex AI embeddings and PostgreSQL's pgvector.

Schema Setup

type Movie @table {
  id: UUID! @default(expr: "uuidV4()")
  title: String!
  description: String
  # Vector field for embeddings - size must match model output (768 for gecko)
  descriptionEmbedding: Vector! @col(size: 768)
}

Generate Embeddings in Mutations

Use _embed server value to auto-generate embeddings via Vertex AI:

mutation CreateMovieWithEmbedding($title: String!, $description: String!) 
  @auth(level: USER) {
  movie_insert(data: {
    title: $title,
    description: $description,
    descriptionEmbedding_embed: {
      model: "textembedding-gecko@003",
      text: $description
    }
  })
}

Similarity Search Query

Data Connect generates _similarity fields for Vector columns:

query SearchMovies($query: String!) @auth(level: PUBLIC) {
  movies_descriptionEmbedding_similarity(
    compare_embed: { model: "textembedding-gecko@003", text: $query },
    method: L2,         # L2, COSINE, or INNER_PRODUCT
    within: 2.0,        # Max distance threshold
    limit: 5
  ) {
    id
    title
    description
    _metadata { distance }  # See how close each result is
  }
}

Similarity Parameters

| Parameter | Description | |-----------|-------------| | compare | Raw Vector to compare against | | compare_embed | Generate embedding from text via Vertex AI | | method | Distance function: L2, COSINE, INNER_PRODUCT | | within | Max distance (results further are excluded) | | where | Additional filters | | limit | Max results to return |

Custom Embeddings

Pass pre-computed vectors directly:

mutation StoreCustomEmbedding($id: UUID!, $embedding: Vector!) @auth(level: USER) {
  movie_update(id: $id, data: { descriptionEmbedding: $embedding })
}

query SearchWithCustomVector($vector: Vector!) @auth(level: PUBLIC) {
  movies_descriptionEmbedding_similarity(
    compare: $vector,
    method: COSINE,
    limit: 10
  ) { id title }
}

Full-Text Search

Fast keyword/phrase search using PostgreSQL's full-text capabilities.

Enable with @searchable

type Movie @table {
  title: String! @searchable
  description: String @searchable(language: "english")
  genre: String @searchable
}

Search Query

Data Connect generates _search fields:

query SearchMovies($query: String!) @auth(level: PUBLIC) {
  movies_search(
    query: $query,
    queryFormat: QUERY,  # QUERY, PLAIN, PHRASE, or ADVANCED
    limit: 20
  ) {
    id title description
    _metadata { relevance }  # Relevance score
  }
}

Query Formats

| Format | Description | |--------|-------------| | QUERY | Web-style (default): quotes, AND, OR supported | | PLAIN | Match all words, any order | | PHRASE | Match exact phrase | | ADVANCED | Full tsquery syntax |

Tuning Results

query SearchWithThreshold($query: String!) @auth(level: PUBLIC) {
  movies_search(
    query: $query,
    relevanceThreshold: 0.05,  # Min relevance score
    where: { genre: { eq: "Action" }},
    orderBy: [{ releaseYear: DESC }]
  ) { id title }
}

Supported Languages

english (default), french, german, spanish, italian, portuguese, dutch, danish, finnish, norwegian, swedish, russian, arabic, hindi, simple


Cloud Functions Integration

Trigger Cloud Functions when mutations execute.

Basic Trigger (Node.js)

import { onMutationExecuted } from "firebase-functions/dataconnect";
import { logger } from "firebase-functions";

export const onUserCreate = onMutationExecuted(
  {
    service: "myService",
    connector: "default",
    operation: "CreateUser",
    region: "us-central1"  // Must match Data Connect location
  },
  (event) => {
    const variables = event.data.payload.variables;
    const returnedData = event.data.payload.data;
    
    logger.info("User created:", returnedData);
    // Send welcome email, sync to analytics, etc.
  }
);

Basic Trigger (Python)

from firebase_functions import dataconnect_fn, logger

@dataconnect_fn.on_mutation_executed(
  service="myService",
  connector="default",
  operation="CreateUser"
)
def on_user_create(event: dataconnect_fn.Event):
  variables = event.data.payload.variables
  returned_data = event.data.payload.data
  logger.info("User created:", returned_data)

Event Data

// event.authType: "app_user" | "unauthenticated" | "admin"
// event.authId: Firebase Auth UID (for app_user)
// event.data.payload.variables: mutation input variables
// event.data.payload.data: mutation response data
// event.data.payload.errors: any errors that occurred

Filtering with Wildcards

// Trigger on all User* mutations
export const onUserMutation = onMutationExecuted(
  { operation: "User*" },
  (event) => { /* ... */ }
);

// Capture operation name
export const onAnyMutation = onMutationExecuted(
  { service: "myService", operation: "{operationName}" },
  (event) => {
    console.log("Operation:", event.params.operationName);
  }
);

Use Cases

  • Data sync: Replicate to Firestore, BigQuery, external APIs
  • Notifications: Send emails, push notifications on events
  • Async workflows: Image processing, data aggregation
  • Audit logging: Track all data changes

⚠️ Avoid infinite loops: Don't trigger mutations that would fire the same trigger. Use filters to exclude self-triggered events.


Data Seeding & Bulk Operations

Local Prototyping with _insertMany

mutation SeedMovies @transaction {
  movie_insertMany(data: [
    { id: "uuid-1", title: "Movie 1", genre: "Action" },
    { id: "uuid-2", title: "Movie 2", genre: "Drama" },
    { id: "uuid-3", title: "Movie 3", genre: "Comedy" }
  ])
}

Reset Data with _upsertMany

mutation ResetData {
  movie_upsertMany(data: [
    { id: "uuid-1", title: "Movie 1", genre: "Action" },
    { id: "uuid-2", title: "Movie 2", genre: "Drama" }
  ])
}

Clear All Data

mutation ClearMovies {
  movie_deleteMany(all: true)
}

Production: Admin SDK Bulk Operations

import { initializeApp } from 'firebase-admin/app';
import { getDataConnect } from 'firebase-admin/data-connect';

const app = initializeApp();
const dc = getDataConnect({ location: "us-central1", serviceId: "my-service" });

const movies = [
  { id: "uuid-1", title: "Movie 1", genre: "Action" },
  { id: "uuid-2", title: "Movie 2", genre: "Drama" }
];

// Bulk insert
await dc.insertMany("movie", movies);

// Bulk upsert
await dc.upsertMany("movie", movies);

// Single operations
await dc.insert("movie", movies[0]);
await dc.upsert("movie", movies[0]);

Emulator Data Persistence

# Export emulator data
npx -y firebase-tools@latest emulators:export ./seed-data

# Start with saved data
npx -y firebase-tools@latest emulators:start --only dataconnect --import=./seed-data

Related Skills

View on GitHub
GitHub Stars0
CategoryDevelopment
UpdatedNaNy ago
Forks0

Trust signals

68/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

2 medium1 low
Ga-mg — Gemini Rules: Install & Safety Check | SkillAgent