← All posts

Fourteen Framework Specialists, One Lesson — Depth Beats Full-Stack

2026-11-10

We counted fourteen language and framework specialist skills in the directory, from cpp-pro at 9.3 down to dotnet-core-expert at 8.9. Not one of them tries to be a full-stack skill. That's not a coincidence — it's the whole point.


The most common instinct when writing a coding skill is to make it cover everything: "you are an expert programmer, familiar with all languages and frameworks." We've read hundreds of skills that open that way. They score, on average, notably worse than the specialists. The framework cluster in our directory is the cleanest demonstration of why.

The specialist cluster, by the numbers

Fourteen skills, one pattern — pick a stack, go deep:

  • cpp-pro — 9.3 and csharp-developer — 9.3: the two co-leaders.
  • kotlin-specialist — 9.1, laravel-specialist — 9.1, rails-expert — 9.1, spring-boot-engineer — 9.1, wordpress-pro — 9.1.
  • golang-pro — 9.0, javascript-pro — 9.0, php-pro — 9.0, rust-engineer — 9.0, nestjs-expert — 9.0, angular-architect — 9.0.
  • dotnet-core-expert — 8.9: the floor of the cluster. Still above the directory average.

That floor matters more than the ceiling. The worst framework specialist in the directory still outscores the typical generalist coding skill. When your worst representative of a category beats the average of the alternative category, the category itself is doing work.

🛠️ laravel-specialist 9.1 Build and configure Laravel 10+ applications, including creating Eloquent models and relationship… ⬇ 4 🛠️ rails-expert 9.1 Rails 7+ specialist that optimizes Active Record queries with includes/eager_load, implements Tur… ⬇ 4 🛠️ spring-boot-engineer 9.1 Generates Spring Boot 3.x configurations, creates REST controllers, implements Spring Security 6 … ⬇ 6 🛠️ wordpress-pro 9.1 Develops custom WordPress themes and plugins, creates and registers Gutenberg blocks and block pa… ⬇ 4 🛠️ golang-pro 9.0 Implements concurrent Go patterns using goroutines and channels, designs and builds microservices… ⬇ 4 🛠️ javascript-pro 9.0 Writes, debugs, and refactors JavaScript code using modern ES2023+ features, async/await patterns… ⬇ 7 🛠️ php-pro 9.0 Use when building PHP applications with modern PHP 8.3+ features, Laravel, or Symfony frameworks.… ⬇ 5 🛠️ rust-engineer 9.0 Writes, reviews, and debugs idiomatic Rust code with memory safety and zero-cost abstractions. Im… ⬇ 7 ⚡ nestjs-expert 9.0 Creates and configures NestJS modules, controllers, services, DTOs, guards, and interceptors for … ⬇ 6 ✍️ angular-architect 9.0 Generates Angular 17+ standalone components, configures advanced routing with lazy loading and gu… ⬇ 5 🛠️ cpp-pro 9.3 Writes, optimizes, and debugs C++ applications using modern C++20/23 features, template metaprogr… ⬇ 9 ⚡ dotnet-core-expert 8.9 Use when building .NET 8 applications with minimal APIs, clean architecture, or cloud-native micr… ⬇ 6 🛠️ csharp-developer 9.3 Use when building C# applications with .NET 8+, ASP.NET Core APIs, or Blazor web apps. Builds RES… ⬇ 7 🎨 kotlin-specialist 9.1 Provides idiomatic Kotlin implementation patterns including coroutine concurrency, Flow stream ha… ⬇ 4

Why decision density compounds

Here's our working theory, and we think it's the core argument: a skill's value scales with the density of contestable decisions it can settle.

"Write good code" settles almost nothing — every decision is still open when the agent starts generating. "A Rails migration must be reversible, keep raw SQL out of models, and prefer counter caches over N+1 queries" settles dozens of decisions before generation begins. Multiply that across a real framework — Spring's dependency injection lifecycle, C++'s ownership and build-flag discipline, Laravel's service container — and you get what we estimate as roughly an order of magnitude more decisions settled per token of skill text.

Framework decisions are also where errors actually live. The bugs that cost engineers late nights are rarely "logic errors in the abstract" — they're "the entity was detached from the session," "the coroutine leaked because the context wasn't cancelled," "the abstract base class has no virtual destructor." A generalist skill can't warn about any of these, because warning requires naming them, and naming requires committing to a stack.

The specialists commit, and the scores follow.

The counter-argument, taken seriously

To be fair to the generalists: model capabilities are now broad by default. A frontier model writes acceptable Go without a golang-pro skill. So what's the specialist actually selling?

Not language syntax — the model already has it. What the skill sells is project-level convention compression. Which version of the framework this codebase targets, which patterns the team has standardized on, which footguns the maintainer has personally stepped in. That's context the model doesn't have and can't guess, packaged at exactly the altitude where the model needs it. angular-architect at 9.0 isn't teaching the model Angular — it's teaching it this project's Angular, and its evaluation reflects a skill that knows what it's for.

What to steal from this cluster

If you're writing skills, the takeaway isn't "write a specialist skill" — it's pick the smallest stack you can name and name it in the title. spring-boot-engineer doesn't say "Java expert." It doesn't even say "Java + Spring." It says Spring Boot, and its trigger surface, its procedures, and its review checklists all live at that altitude.

The fourteen specialists in this cluster aren't fourteen small generalists. They're fourteen deliberately narrow instruments, each one forfeiting the other thirteen stacks on purpose. That forfeiture is the price of depth, and in our six-dimension scoring it has never once failed to pay for itself.

Depth is a strategy, not a limitation. The framework cluster is the proof.