amplifying/research · feb-2026
A systematic survey of 2,430 tool picks from Claude Code
across 3 models, 4 project types, and 20 categories
Developers describe what they need and let Claude Code decide. When millions vibe-code their way to a working app, the stacks it chooses become the stacks.
If the agent doesn't pick you, you're invisible to a growing share of new projects.
Your default stack is increasingly shaped by what the agent knows, not what you researched.
A single model's training data may shape market share. This is a new kind of distribution.
This study: 2,430 open-ended prompts to Claude Code across real codebases. No tool names in any prompt. Just “what should I use?”
We pointed Claude Code at real repos and asked
“What tool should I use?”
2,430 prompts across 4 repos, 3 models, 3 runs each
Open a real project repo (Next.js SaaS, Python API, React SPA, or Node CLI)
Ask an open-ended question, no tool names in any prompt
Watch Claude Code actually build: install packages, write code, configure tools
Reset to clean state and repeat
Next.js 14, TypeScript, App Router
FastAPI, Python 3.11, Pydantic
Vite, React 18, TypeScript
Node.js, TypeScript, Commander.js
Each run
git resetExample prompt
“i need a database, what should i use”
Claude Code reads the repo, installs packages, writes code. We observe what it chose
Run-to-run consistency
Same model, same prompt, same repo, 3 independent runs:
all 3 agree
2 of 3 agree
all differ
Range: 93% (CI/CD, Pkg Manager) to 40% (Real-time). Monopoly categories are most reproducible
A key finding
Custom/DIY is the most common extracted label, appearing in 12 of 20 categories. 252 total picks, more than any individual tool. E.g., “add feature flags” → builds config files + env vars + hashed rollout. “Add auth” (Python) → writes JWT + passlib from scratch.
Note: Custom/DIY spans 12 categories; individual tools are category-specific. This is a cross-category aggregate, not a head-to-head comparison.
When Claude Code picks a tool, it decides what gets built with it
Cross-Language
JavaScript / TypeScript
Python
Stack-specific. Winners change by ecosystem. Not necessarily the “best” tools, but the ones Claude Code installs when developers say “set it up.”
4 categories where Claude Code has effectively decided the default
Python: Railway 82%. 0 primary picks for traditional cloud. Netlify (67 alt), Cloudflare Pages (30 alt), Fly.io (35 alt) are frequent alternatives. AWS Amplify is mentioned 24 times but never recommended.
Winners change by language. Aggregate rankings are misleading
Universal
JavaScript / TypeScript
Python
All percentages are within-ecosystem (JS-only or Python-only), not cross-ecosystem aggregates
Across all three models in Claude Code
18 of 20 categories agree within each ecosystem
75% in aggregate, but 3 of 5 “disagreements” are artifacts of mixing JS and Python results. Only Caching and Real-time show genuine cross-ecosystem disagreement.
Universal (any language)
JavaScript / TypeScript only
Ecosystem-dependent (winner varies by language)
Per-ecosystem data, not misleading cross-ecosystem aggregates
Cross-language disagreements
Sonnet 4.5
Redis 71%
Opus 4.5
Redis 31%
Opus 4.6
Custom/DIY 32%
Sonnet 4.5
SSE 23%
Opus 4.5
Custom/DIY 19%
Opus 4.6
Custom/DIY 20%
Within-ecosystem shifts (recency gradient)
Sonnet 4.5
Prisma 79%
Opus 4.5
Drizzle 60%
Opus 4.6
Drizzle 100%
Sonnet 4.5
BullMQ 50%
Opus 4.5
BullMQ 56%
Opus 4.6
Inngest 50%
Sonnet 4.5
Celery 100%
Opus 4.5
FastAPI BgTasks 38%
Opus 4.6
FastAPI BgTasks 44%
The remaining 15 categories have clear consensus across all three models
Newer models pick newer tools. Within-ecosystem percentages
Strongest conviction. Favors established tools: Redis 93% (Python caching), Prisma 79% (JS ORM), Celery 100% (Python jobs).
Even distribution. Acknowledges more alternatives. Sits between convention and novelty.
Forward-looking. Drizzle 55% (JS), Inngest 26% (JS), zero Prisma picks in JS. Builds custom the most.
Same model, different project, different recommendations
Next.js 14, TypeScript, App Router
FastAPI, Python 3.11, Pydantic
Vite, React 18, TypeScript
Node.js, TypeScript, Commander.js
Vercel is 100% for Next.js & React, 0% for Python (Railway gets 82%)
NextAuth.js is 91% for Next.js, but Python auth is 100% Custom/DIY
Python deployment: What you'd expect: AWS, GCP, Azure. What you get: Railway at 82%. AWS Amplify: 24 mentions but 0 picks. AWS/GCP never primary.
Real prompts, real responses. The agent installs packages, writes code, and commits
“i need a database, what should i use”
PostgreSQL is the right choice for a SaaS app — it's reliable, scales well, and every hosting provider supports it. I'll set you up with Supabase as the hosted PostgreSQL provider:
pnpm add @supabase/supabase-js
import { createClient } from '@supabase/supabase-js';
export const supabase = createClient(...);“how do i deploy this”
Railway is great for FastAPI apps — it auto-detects Python, handles your requirements.txt, and gives you a PostgreSQL addon in one click.
npm i -g @railway/cli railway login && railway init
Adding a Procfile with: web: uvicorn app.main:app --host 0.0.0.0 --port $PORT
“add background job processing”
Inngest is great for Next.js — it runs as serverless functions alongside your app, no separate worker infrastructure needed.
pnpm add inngest
export const sendWeeklyDigest = inngest.createFunction(
{ id: 'send-weekly-digest' },
{ cron: '0 9 * * 1' },
async ({ step }) => { ... }
);Each step is retryable independently.
“set up the database layer”
Drizzle ORM is the best fit — type-safe, lightweight, and has a SQL-like query syntax.
pnpm add drizzle-orm postgres pnpm add -D drizzle-kit
export const users = pgTable('users', {
id: uuid('id').primaryKey().defaultRandom(),
email: text('email').notNull().unique(),
});Each response installs packages, writes config, and commits code. We extract the primary tool from the diff
How the same categories resolve differently by stack
What Claude Code favors. Not market adoption data
Universal
JavaScript
Python
Universal
JavaScript
Python
AI agents are a new discovery channel. The Custom/DIY finding means agents prefer building. make your tool clearly superior to what an agent can build.
Claude Code's recommendations adapt to your stack. Evaluate whether its hand-rolled solutions or proper libraries better serve your long-term needs.
Model personality differences are measurable. Training data recency appears to shape tool preferences. The Custom/DIY bias (12 of 20 categories) raises a design question: when should the agent recommend a library vs. building from scratch? Context-awareness (different tools per ecosystem) is a clear strength.
Methodology: open-ended prompts, clean state, 5 phrasings, 4 repos, 3 runs
Read full methodology →amplifying/research
The complete analysis includes 20 category deep-dives, repo-specific breakdowns, phrasing stability analysis, and all raw data. Part of Amplifying's broader research into AI judgment.