⏳ This skill is pending AI review.
Scores will appear once the review pipeline completes.
atlas-spanner
Google Cloud Spanner specifics for Atlas: the extended build and login, URLs and Application Default Credentials, GoogleSQL and PostgreSQL dialects, the emulator dev database and what it lacks, `-- atlas:txmode none` in every migration file, partial failures and long-running schema changes (index backfills, validations, Google's batch limits), what Spanner cannot change in place (primary keys, interleaving, column types, renames), objects Atlas leaves out or plans wrongly (identity columns, NOT ENFORCED foreign keys, interleaved indexes, change streams, database options), hotspot-free keys and bit-reversed sequences, named schemas, roles and grants, migration tests in place of schema tests, mutation limits and batched backfills, and custom lint rules. Use with the atlas skill whenever Atlas manages a Spanner database.
Choose how to use this skill
You do not need every option. Choose the path your AI client supports. The stable page stays the same; versioned files are immutable.
1. Native installer
This listing has no registered native installer command. Use the complete package or source fallback below, depending on what your client supports.
Do not guess an installer command or replace an existing version without reviewing the diff.
2. Complete package recommended
Download the ZIP when available. It includes SKILL.md plus the references, security notes and version metadata.
No complete ProSkills package is published for this listing yet.3. Prompt-only
Copy the prompt above when the agent can read the stable page or when you want to adopt the workflow without installing a skill.
Need only the instruction file?
Download SKILL.md only if your client requires a single file. The complete ZIP is safer for a full installation because it preserves the references and release context.
No path installs or executes anything by itself. Your agent still needs access to the project files. Before updating, compare the installed version and review the diff.
// RATINGS
Not yet listed on ClawHub or SkillsMP
// README
Atlas - Manage Your Database Schema as Code
Atlas is a language-agnostic tool for managing and migrating database schemas using modern DevOps principles. It offers two workflows:
-
Declarative: Similar to Terraform, Atlas compares the current state of the database to the desired state, as defined in an [HCL], [SQL], or [ORM] schema. Based on this comparison, it generates and executes a migration plan to transition the database to its desired state.
-
Versioned: Unlike other tools, Atlas automatically plans schema migrations for you. Users can describe their desired database schema in [HCL], [SQL], or their chosen [ORM], and by utilizing Atlas, they can plan, lint, and apply the necessary migrations to the database.
Supported Databases
PostgreSQL · MySQL · MariaDB · SQL Server · SQLite · ClickHouse · Redshift · Oracle · Snowflake · CockroachDB · TiDB · Databricks · Spanner · Aurora DSQL · Azure Fabric
Installation
macOS + Linux:
curl -sSf https://atlasgo.sh | sh
Homebrew:
brew install ariga/tap/atlas
Docker:
docker pull arigaio/atlas
NPM:
npx @ariga/atlas
See installation docs for all platforms.
Install the skills
Claude Code:
claude plugin marketplace add ariga/atlas
claude plugin install atlas@ariga
Codex, Cursor, or GitHub Copilot, from the root of your repository:
npx skills add ariga/atlas -a codex -y # or: -a cursor, -a github-copilot
[!NOTE] The Atlas website has the most up-to-date version of these skills: they are maintained there and copied to
skills/from time to time.
Key Features
- Declarative schema migrations: The
atlas schemacommand offers various options for inspecting, diffing, comparing, planning and applying migrations using standard Terraform-like workflows. - Versioned migrations: The
atlas migratecommand provides a state-of-the-art experience for planning, linting, and applying migrations. - Schema as Code: Define your desired database schema using [SQL], [HCL], or your chosen [ORM]. Atlas supports 16 ORM loaders across 6 languages.
- Security-as-Code: Manage roles, permissions, and row-level security policies as version-controlled code.
- Data management: Manage seed and lookup data declaratively alongside your schema.
- Cloud-native CI/CD: Kubernetes operator, Terraform provider, GitHub Actions, GitLab CI, ArgoCD, and more.
- Testing framework: Unit test schema logic (functions, views, triggers, procedures) and migration behavior.
- 50+ safety analyzers: Database-aware migration linting that detects destructive changes, data-dependent modifications, table locks, backward-incompatible changes, and more.
- Multi-tenancy: Built-in support for multi-tenant database migrations.
- Drift detection: Monitoring as Code with automatic schema drift detection and remediation.
- Cloud integration: IAM-based authentication for AWS RDS and GCP Cloud SQL, secrets management via AWS Secrets Manager, GCP Secret Manager, HashiCorp Vault, and more.
Getting Started
Get started with Atlas by following the Getting Started docs.
Inspect an existing database schema:
atlas schema inspect -u "postgres://localhost:5432/mydb"
Apply your desired schema to the database:
atlas schema apply \
--url "postgres://localhost:5432/mydb" \
--to file://schema.hcl \
--dev-url "docker://postgres/16/dev"
Migration Linting
Atlas ships with 50+ built-in analyzers that review your migration files and catch issues before they reach production. Analyzers detect destructive changes like dropped tables or columns, data-dependent modifications such as adding non-nullable columns without defaults, and database-specific risks like table locks and table rewrites that can cause downtime on busy tables. You can also define your own custom policy rules.
atlas migrate lint --dev-url "docker://postgres/16/dev"
Schema Testing
Test database logic (functions, views, triggers, procedures) and
data migrations with .test.hcl files:
test "schema" "postal" {
# Valid postal codes pass
exec {
sql = "SELECT '12345'::us_postal_code"
}
# Invalid postal codes fail
catch {
sql = "SELECT 'hello'::us_postal_code"
}
}
test "schema" "seed" {
for_each = [
{input: "hello", expected: "HELLO"},
{input: "world", expected: "WORLD"},
]
exec {
sql = "SELECT upper('${each.value.input}')"
output = each.value.expected
}
}
atlas schema test --dev-url "docker://postgres/16/dev"
Security-as-Code
Manage database roles, permissions, and row-level security as version-controlled code:
role "app_readonly" {
comment = "Read-only access for reporting"
}
role "app_writer" {
comment = "Read-write access for the application"
member_of = [role.app_readonly]
}
user "api_user" {
// HOW IT'S BUILT
KEY FILES