Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
PostgreSQL용 에이전트 스킬과 플러그인, 벤더에 구애받지 않는 모범 사례와 Azure 전용 패턴 제공
Agent skills and plugins for PostgreSQL — vendor-agnostic best practices plus Azure-specific patterns that AI coding agents can't learn from training data
플러그인PythonGitHub @microsoft직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Build, tune, and operate PostgreSQL with an AI assistant that can act, not just advise. Postgres Skills gives developers 33 expert-curated sub-skills for PostgreSQL anywhere: local, self-hosted, other clouds, Azure Database for PostgreSQL, and Azure HorizonDB. It covers application development, query performance, indexing, vector search, RAG, security, operations, and the full Apache AGE graph lifecycle.README 전문 보기 ↗Build, tune, and operate PostgreSQL with an AI assistant that can act, not just advise. Postgres Skills gives developers 33 expert-curated sub-skills for PostgreSQL anywhere: local, self-hosted, other clouds, Azure Database for PostgreSQL, and Azure HorizonDB. It covers application development, query performance, indexing, vector search, RAG, security, operations, and the full Apache AGE graph lifecycle. With postgres-mcp for database actions and the Azure CLI for Azure resource management, your assistant can inspect the real environment and safely execute approved changes instead of returning generic snippets.
A default AI assistant gives you plausible-looking PostgreSQL advice. This plugin gives you expert guidance and runs it against your actual database, safely:
| A default assistant | With this plugin |
|---|---|
| Suggests generic SQL and hopes it fits | Reads your live schema, tier, and settings first, then tailors the answer |
| Confidently recommends commands that break managed databases | Applies managed-service guardrails and the correct Azure workflow |
| Explains what you could do | Executes it — query, index, provision, restore — with confirmation before anything destructive |
| Can't tell self-hosted from Azure | Detects the connection and routes to the right generic or Azure guidance |
| Hand-waves "just use a graph database" | Derives an ontology from your data, builds the graph on Apache AGE, and answers questions with openCypher — all inside PostgreSQL |
This repo is the plugin. Installing it gives your agent three things that work together:
az) — executes on the managed service: provisioning, scaling, parameters, HA and failover, replicas, point-in-time restore, networking, and upgrades.Installing the plugin launches
@microsoft/postgres-mcp locally
through npx. The MCP server can access the database selected by the user and
has the permissions of that PostgreSQL role. Query results and diagnostics
returned by the server become part of the user's AI-assistant interaction.
Use a dedicated, least-privilege role and a read-only connection profile for exploration. The skills require explicit confirmation before database writes, CSV imports, graph writes, or Azure resource changes. They treat database content as untrusted data and minimize retrieval to what the task needs.
The bundled MCP configuration disables postgres-mcp telemetry and does not transmit database content to Microsoft for plugin telemetry. Package installation requires access to the npm registry, and Azure workflows may use the Azure CLI to communicate with Azure after the user authenticates. See the plugin setup and data-access disclosure before connecting a sensitive or production database.
You need an internet connection, an account for one supported AI agent, and
Node.js LTS. Node.js includes npx, which
runs the bundled PostgreSQL MCP server.
Install Node.js LTS, then open a new terminal and verify:
node --version
npx --version
Install one AI agent:
Claude Code — requires a Pro, Max, Team, Enterprise, or Console account. The free Claude plan does not include Claude Code.
| Operating system | Installation command |
|---|---|
| Windows PowerShell | irm https://claude.ai/install.ps1 | iex |
| macOS, Linux, or WSL | curl -fsSL https://claude.ai/install.sh | bash |
GitHub Copilot CLI — requires an active GitHub Copilot subscription. Organization administrators must allow Copilot CLI. The npm installation requires Node.js 22 or later; Windows also requires PowerShell 6 or later.
npm install -g @github/copilot
Codex CLI — supports ChatGPT Plus, Pro, Business, Edu, or Enterprise, or an OpenAI API key.
| Operating system | Installation command |
|---|---|
| Windows PowerShell | powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex" |
| macOS or Linux | curl -fsSL https://chatgpt.com/codex/install.sh | sh |
On Windows, Git for Windows is optional but recommended for Claude Code and Codex.
Start the agent and sign in:
| Agent | Start command | First-time sign-in |
|---|---|---|
| Claude Code | claude | Follow the browser prompt. |
| GitHub Copilot CLI | copilot | Enter /login and follow the prompts. |
| Codex CLI | codex | Select , or configure an API key. |
To install the guidance without the full plugin, use the skills.sh CLI:
npx skills add microsoft/postgres-skills --full-depth
The CLI discovers both postgresql-best-practices and pg-graph and lets you
choose which to install. To install one directly:
npx skills add microsoft/postgres-skills --skill postgresql-best-practices --full-depth
npx skills add microsoft/postgres-skills --skill pg-graph --full-depth
This installs the skills only. Use the plugin installation above when you also
want the bundled postgres-mcp server and live database tools.
"What tables do I have, and which are the biggest?" → Introspects your live schema and reports tables, row estimates, and sizes.
"Set up vector search for my product catalog" → Selects the right vector index for your environment and applies the extension and index after you confirm.
"My query went from 200ms to 8 seconds after deployment" → Analyzes the live execution plan and buffer usage to identify the regression.
"Add multi-tenant isolation to these tables" → Designs row-level security policies for your tenancy model and applies them after confirmation.
"Partition my 500M-row events table by month" → Designs the partition layout, checks pruning requirements, and applies the DDL with confirmation.
"Index my JSONB documents for containment queries" → Examines the query pattern and creates the appropriate GIN index.
"Batch-embed 1 million rows without leaving the database"
→ Processes embeddings safely in batches with the azure_ai extension while respecting service limits.
"Provision a General Purpose server and scale it to 8 vCores" → Selects the right Azure resources and provisions or scales the server after confirmation.
"Change work_mem on my Azure server"
→ Clarifies server-wide vs per-database scope, validates the current configuration, and safely applies the parameter change.
"Set up zone-redundant HA and add a read replica" → Configures high availability and a read replica with the required topology and safety checks.
"Roll my database back to 2pm yesterday" → Validates the restore window and creates a point-in-time restored server after confirming the target time.
"I accidentally deleted my server yesterday — get it back" → Finds the delete event in the activity log and, after confirmation, revives the server from its retained backup within the 5-day window.
"I can't connect — 'SSL connection is required'" → Diagnoses firewall, private endpoint, VNet, DNS, and certificate configuration.
"Add passwordless Entra ID authentication to my app" → Generates the application connection code and managed-identity configuration.
"Upgrade my server from PG13 to PG16" → Validates extension and application compatibility and performs the required pre-check before the upgrade.
"Create an Azure HorizonDB cluster and enable pgvector" → Recognizes the HorizonDB environment and uses cluster and parameter-group guidance instead of applying Flexible Server workflows.
"Turn my documents into a knowledge graph" → Samples your data, proposes node labels, edge types, and properties for review, then safely MERGE-loads the approved graph into Apache AGE.
"Generate an ontology from my existing tables" → Reads your schema and foreign keys and proposes tables as node labels and relationships as edges for review before anything is built.
"Answer this by traversing my graph" → Introspects the graph schema, then generates and runs a validated openCypher query.
"Visualize my graph in VS Code" → Returns complete vertices and edges with display labels so VS Code renders an interactive node-edge graph.
"Why did the graph recommend this?" → Returns the reasoning path, provenance, and confidence bounded by the weakest supporting edge.
These sub-skills work with any PostgreSQL deployment — self-hosted, RDS, Cloud SQL, Azure, or local.
| Sub-skill | Helps you with | What the agent learns that LLMs get wrong |
|---|---|---|
| postgresql-vector-search | pgvector setup, HNSW indexes, distance operators | Index type selection, recall tuning, operator/index mismatch |
| postgresql-genai-rag | RAG pipelines, hybrid search, chunking | RRF scoring, dimension mismatch, FTS + vector combination |
| postgresql-extensions | Extension install/upgrade, troubleshooting | shared_preload_libraries restart requirement, version compatibility |
| postgresql-advanced-indexing | B-tree, GIN, GiST, BRIN, partial indexes | Covering indexes, index-only scan prerequisites, deduplication (PG13+) |
| postgresql-jsonb-patterns | JSONB operators, indexing, query patterns | jsonb_path_query (PG12+), GIN trigram anti-patterns, containment vs existence |
| postgresql-table-partitioning | Range/list/hash partitioning | Partition pruning failures, default partition traps, PG14+ DETACH CONCURRENTLY |
| postgresql-row-level-security | Multi-tenant RLS policies | Policy stacking, leaky view anti-patterns, performance with 1000+ tenants |
| postgresql-full-text-search | tsvector, tsquery, ranking | Phrase search (PG9.6+), custom dictionaries, weighted ranking |
| postgresql-connection-management | Pooling, timeouts, connection lifecycle | work_mem multiplication in pools, prepared statement mode traps |
| postgresql-replication | Publications, subscriptions, CDC | Row filter (PG15+), conflict resolution, initial data sync strategies |
| postgresql-query-performance | EXPLAIN analysis, vacuum, statistics | JIT thresholds, parallel query pitfalls, vacuum/bloat tuning |
These sub-skills are gated by the connection capability check. They cover managed-service workflows, Azure AI integrations, and platform-specific safety guardrails.
Each Azure sub-skill also covers Azure HorizonDB (Preview) in an On Azure HorizonDB section. When your connection is a HorizonDB cluster (*.horizondb.azure.com), the agent routes to the HorizonDB-specific guidance — clusters, az horizondb, and parameter groups — instead of falling back to Flexible Server steps, and flags features not yet available on HorizonDB (VNet injection, built-in PgBouncer, index tuning, major-version upgrades, configurable backup retention, cross-region replicas). See Azure HorizonDB.
| Sub-skill | Helps you with | What the agent learns that LLMs get wrong |
|---|---|---|
| azure-postgresql-vector-diskann | DiskANN for billion-scale vector search | lists vs m/ef_construction tuning, DiskANN is Azure-only |
| azure-postgresql-genai-patterns | In-database embeddings + RAG with azure_ai | Batch processing limits, rate limit handling, Path A vs B decision |
| azure-postgresql-azure-ai | azure_ai extension setup, AI functions | create() vs create_embeddings(), managed identity config |
| azure-postgresql-intelligent-tuning | Query Store, index recommendations | Query Store must be enabled first, pg_qs.query_capture_mode |
| azure-postgresql-entra-id-auth | Passwordless auth with Entra ID | Token refresh before 5-min expiry, managed identity setup |
| azure-postgresql-connection-pooling | Built-in PgBouncer configuration | Prepared statements break in transaction mode |
| azure-postgresql-ha-disaster-recovery | Zone-redundant HA, PITR, geo-replicas | Forced vs planned failover, PITR creates NEW server |
| azure-postgresql-restore-deleted-server | Recovering a deleted server, delete locks | 5-day window, ReviveDropped via az rest (no az postgres flexible-server subcommand), same subscription/region, HorizonDB clusters unrecoverable |
| azure-postgresql-networking-ssl | Private endpoints, VNet, SSL | VNet chosen at creation (can't change), DigiCert G2 cert |
| azure-postgresql-provisioning | IaC, SKU selection, scaling | Burstable limits, storage can't shrink, IOPS scaling |
| azure-postgresql-extension-lifecycle | Extension allowlisting on Azure | azure.extensions param, azure_pg_admin role requirement |
| azure-postgresql-upgrades-maintenance | Major version upgrades, maintenance | MVU is one-way, no skip-version, pre-check |
The pg-graph skill is the single home for graph work on PostgreSQL, covering the full lifecycle: derive an ontology from your data (with a human feedback loop), build the graph, and query it with openCypher, natural-language-to-Cypher, and graph-augmented retrieval. It uses only capabilities available today — agent-driven extraction over the MCP query tools (any PostgreSQL with AGE) or the azure_ai extension for in-database work at scale on Azure.
| Sub-skill | Helps you with | What the agent learns that LLMs get wrong |
|---|---|---|
| ontology-derivation | Deriving a graph ontology from structured or unstructured data with a human feedback loop | Never finalize an ontology without user approval; agent-driven vs azure_ai modes; no unreleased ai.* primitives |
| extract-to-graph | Extracting, deduplicating, and MERGE-loading entities into AGE from a finalized ontology | Idempotent MERGE on stable business keys to avoid duplicate vertices across repeated extraction |
| context-dedup | Entity resolution and canonicalization of aliases | Blocking for scale, persistent canonical map, resolving via type + graph neighborhood + source snippet |
| opencypher-age-patterns | AGE setup, Cypher wrapping, MATCH/MERGE/CREATE, indexing vertices and edges | Cypher must be wrapped in ag_catalog.cypher(...) with a column definition list; search_path ordering |
| text-to-cypher | Turning a natural-language question into a validated openCypher query | Ground on schema first, agtype casting, no host bind parameters inside $$...$$; return full objects + disp_label for VS Code graph visualization |
| graph-schema-introspection | Discovering labels, edge types, and properties | Use the ag_label catalog so generated Cypher is grounded, not hallucinated |
| graph-augmented-rag | Retrieval combining vector similarity with graph traversal and reranking | Hybrid graph retrieval that goes beyond flat vector search |
| graph-explainability | Provenance, reasoning paths, and explainable recommendations | Confidence bounded by the weakest edge on the path; reproducible reasoning trace |
| azure-ai-semantic-search | Enabling and configuring azure_ai and generating embeddings for semantic search | Read current settings and ask for endpoint/key/deployment — never invent them |
| examples | End-to-end worked graph examples spanning schema, query, and results | Grounded in the wrapping and safety rules from the other pg-graph sub-skills |
See CONTRIBUTING.md for guidelines on adding or improving skills and sub-skills.
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.
Exit the agent after sign-in so you are back at your normal terminal prompt.
Install Postgres Skills from that terminal:
| Agent | Installation commands |
|---|---|
| Claude Code | claude plugin marketplace add microsoft/postgres-skillsclaude plugin install postgres-skills@postgres-skills |
| GitHub Copilot CLI | copilot plugin marketplace add microsoft/postgres-skillscopilot plugin install postgres-skills@postgres-skills |
| Codex CLI | codex plugin marketplace add microsoft/postgres-skillscodex plugin install postgres-skills@postgres-skills |
Already have an agent installed? Start here.
Start your agent again and connect safely. Ask:
Help me connect postgres-skills to my PostgreSQL database using a read-only profile.
Have your database host, port, database name, and user name ready. Enter the password only in the hidden password prompt, never in chat. See the setup and security guide for details.
--validate-only