ahtishamshahzad/agent_dev_flow/database-selection
- community
Checking that the SKILL.md file is still in the repository.
Use to choose the database (PostgreSQL, MySQL, MongoDB) and — separately — the data layer (Prisma, Drizzle, Mongoose, native driver). Relational is usually right for payments, orders, inventory, reporting, financial data, transactions, strong relations; MongoDB fits highly variable documents with embedded access patterns.
Install
npx vskill@latest install ahtishamshahzad/agent_dev_flow/database-selectionSKILL.md
Database Selection
Purpose
Make two separate decisions, in order: (1) the database — PostgreSQL, MySQL, or MongoDB — from the data's shape and integrity needs; (2) the data layer — Prisma, Drizzle, Mongoose, or native driver — from team ergonomics and control needs. Feeds ../../stack-recommendation; requires user approval (Gate 2).
When to Use
- At the start of any project that stores data, or when adding a store.
- When re-evaluating persistence for a migration (
../../migration-planning). - Not after the database is approved and unchanged.
Inputs
- Requirement baseline: entities, relations, integrity needs, reporting needs, expected access patterns.
- Existing infrastructure/team experience (
../../existing-project-auditfindings where applicable).
Discovery Questions
- Does the domain involve payments, orders, inventory, reporting, financial data, multi-entity transactions, or strongly related entities? (Any yes → relational is the usual answer.)
- Are document structures genuinely highly variable across records, with data naturally read/written as embedded documents? (That's the MongoDB case — not "we haven't designed the schema yet.")
- What queries will exist: cross-entity joins/aggregations (relational strength) vs whole-document reads by key (document strength)?
- For the data layer: does the team want schema-first ergonomics (Prisma), SQL-proximity and control (Drizzle), ODM conveniences (Mongoose), or minimal abstraction (native driver)?
Responsibilities
- Database decision first, on data shape and integrity:
- Relational (PostgreSQL/MySQL) usually preferred for: payments, orders, inventory, reporting, financial data, transactional multi-entity writes, strong relations/constraints. Between them: PostgreSQL for richer types/features, MySQL where team/infra experience or hosting favors it — record the reason.
- MongoDB may be preferred for: highly variable document structures and access patterns that naturally read/write embedded documents as units.
- Data layer decision second, pairs must be coherent:
- Relational DB → Prisma (schema-first DX, generated types), Drizzle (TypeScript-SQL closeness, control), or native driver/query builder (maximum control, more discipline).
- MongoDB → Mongoose (schemas/middleware over documents) or native driver (direct control).
- Record both decisions with justification and rejected alternatives; note operational implications (backups, migrations tooling —
database-migrations,backup-recovery). - Hand off to the matching skills:
relational-schema-design+prisma-relational/drizzle-relational, ordocument-schema-design+mongoose-mongodb.
Required Workflow
- Gather entities, relations, integrity/reporting needs, access patterns.
- Decide the database from data shape (relational signals vs document signals).
- Decide the data layer for that database from team/control needs.
- Record both with trade-offs for Gate 2 approval.
- Hand off to schema-design + data-layer skills.
Decision Rules
- Never conflate the two decisions — "we use Prisma" is not a database choice; "we use Postgres" doesn't pick the data layer.
- Financial/transactional/relational signals outweigh document-flexibility preferences: integrity failures cost more than schema ceremony.
- "Schemaless" is not a reason for MongoDB — undesigned data isn't variable data (
document-schema-designstill requires design). - Polyglot persistence (two stores) needs strong, separate justification per store — default is one.
- Team familiarity tiebreaks between adequate options; it doesn't override a shape mismatch.
Rules
- Recommend, don't pre-select; user approves at Gate 2.
- No installation or schema work before approval.
- Record what would flip each decision.
Anti-Patterns
- Choosing MongoDB for an orders/payments/inventory domain because iteration feels faster.
- Choosing the database by choosing an ORM first.
- Defaulting to PostgreSQL (or anything) without stating why it fits this data.
- "We'll add relations to MongoDB later with manual refs everywhere" — that's a relational domain in denial.
- Two databases because two tutorials.
Validation Checklist
- [ ] Data shape, integrity, reporting, access patterns gathered.
- [ ] Database decided on data shape (relational signals checked explicitly).
- [ ] Data layer decided separately, coherent with the database.
- [ ] Both recorded with trade-offs + rejected alternatives.
- [ ] Handed to schema-design + data-layer skills; Gate 2 pending.
Definition of Done
Two recorded, separately justified decisions — database and data layer — coherent as a pair, tied to the domain's data shape and integrity needs, with trade-offs noted and approval pending.
Related Skills
../../stack-recommendation, relational-schema-design, document-schema-design, prisma-relational, drizzle-relational, mongoose-mongodb, database-migrations, backup-recovery, ../../backend/existing-backend-audit.
Related Knowledge
../../../knowledge/ (domain model, infra constraints, team experience).
Related References
../../../references/database/ (comparison notes, when populated).
Context Loading Guidance
- Requires: entity/relation summary, integrity + reporting needs, access patterns.
- Does not require: full schema drafts, ORM docs, application code.
- May load: one schema-design skill + one data-layer skill after deciding.
- Stop when: both decisions are recorded for Gate 2.
Token Efficiency Guidance
Decide from the requirements summary; the two-decision table (option, fit, trade-off) is the whole artifact. Don't draft schemas here.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.ai/skills/database/database-selection/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/ahtishamshahzad/agent_dev_flow/database-selection)