What Claude Code Chooses

Published: (February 26, 2026 at 01:12 PM EST)
4 min read

Source: Hacker News

What Claude Code Actually Chooses

We pointed Claude Code at 2,430 real repositories (no tool names in any prompt, open‑ended questions only).

  • Models: Sonnet 4.5, Opus 4.5, Opus 4.6
  • Project types: 4
  • Tool categories: 20
  • Extraction rate: 85.3 % (2,073 parseable picks)
  • Model agreement: 90 %
  • Within‑ecosystem picks: 18 of 20 categories

Key finding: Claude Code builds custom solutions far more often than it recommends off‑the‑shelf tools. “Custom/DIY” appears in 12 of the 20 categories and accounts for 252 total picks—more than any single tool.

Examples

  • “Add feature flags” → builds a config system with environment variables and percentage‑based rollout (instead of LaunchDarkly).
  • “Add auth” in Python → writes JWT + bcrypt from scratch.

When a tool is chosen, the choice is decisive: GitHub Actions (94 %), Stripe (91 %), shadcn/ui (90 %).

Update: Sonnet 4.6 was released on Feb 17 2026; the benchmark will be rerun against it.

Headline Findings

Build vs Buy

  • In 12 of 20 categories Claude Code prefers custom implementations.
  • Total Custom/DIY picks: 252 (feature flags via config files + env vars, Python auth via JWT + passlib, caching via in‑memory TTL wrappers).
CategoryCustom/DIY share
Feature Flags69 %
Authentication (Python)100 %
Authentication (overall)48 %
Observability22 %

The Default Stack

When Claude Code does recommend a tool, the defaults are heavily JavaScript‑centric.

RankToolPick rate
1GitHub Actions93.8 % (152/162)
2Stripe91.4 % (64/70)
3shadcn/ui90.1 % (64/71)
4(JS ecosystem)100 % (86/86)
5(unspecified)68.4 % (52/76)
6Zustand – State Management64.8 % (57/88)
7Sentry – Observability63.1 % (101/160)
862.7 % (64/102)
959.1 % (101/171)
1058.4 % (73/125)

Against the Grain

AreaPrimary picksNotable mentions
State Management0 primary23 mentions; Zustand chosen 57 times
API LayerNoneFramework‑native routing preferred
Testing4 % primary31 alternative picks; known tools not chosen
Package Manager1 primary51 alternative picks; still well‑known

The Recency Gradient

Newer models gravitate toward newer tools. Percentages are shown within each ecosystem.

  • JS ORM – Sonnet 4.5: 79 % Drizzle → Opus 4.6: 0 % (replaced by Drizzle at 100 %).
  • Python Jobs – Sonnet 4.5: 100 % (no picks) → Opus 4.6: 0 % (replaced by FastAPI BackgroundTasks at 44 %; rest Custom/DIY).
  • Python Caching – Sonnet 4.5: 93 % Redis → Opus 4.6: 29 % (Custom/DIY rises to 50 %).

The Deployment Split

JS Frontend (Next.js + React SPA)

  • 86 / 86 deployment picks → Vercel (primary, zero‑config).

Python Backend (FastAPI)

  • Expected cloud providers (AWS, GCP, Azure) → Railway chosen 82 % of the time.
  • Netlify (67 alt)
  • Cloudflare Pages (30 alt)
  • GitHub Pages (26 alt)
  • DigitalOcean (7 alt)
  • AWS Amplify (24 mentions)
  • Firebase Hosting (7 mentions)
  • AWS App Runner (5 mentions)

Truly invisible (rarely mentioned)

  • AWS (EC2/ECS)
  • Google Cloud
  • Azure
  • Heroku

Example query: “Where should I deploy this? (Next.js SaaS, Opus 4.5)”

  • Vercel – recommended with install commands and reasoning.
  • Netlify – offered as a comparable alternative.
  • AWS Amplify – noted for existing AWS ecosystems.

Where Models Disagree

All three models agree in 18 of 20 categories within each ecosystem. The remaining categories show genuine shifts.

CategorySonnet 4.5Opus 4.5Opus 4.6
ORM (JS)Prisma 79 %Drizzle 60 %Drizzle 100 %
Jobs (JS)BullMQ 50 %BullMQ 56 %Inngest 50 %
Jobs (Python)Celery 100 %FastAPI BgTasks 38 %FastAPI BgTasks 44 %
Caching (Cross‑language)Redis 71 %Redis 31 %Custom/DIY 32 %
Real‑time (Cross‑language)SSE 23 %Custom/DIY 19 %Custom/DIY 20 %

Dig into the Data

The full dataset includes category deep‑dives, phrasing‑stability analysis, cross‑repo consistency metrics, and market‑implication commentary.

0 views
Back to Blog

Related posts

Read more »

When does MCP make sense vs CLI?

I’m going to make a bold claim: MCP is already dying. We may not fully realize it yet, but the signs are there. OpenClaw doesn’t support it. Pi doesn’t support...