August 29, 2026

The tech-stack Skill — Deterministic Stack Selection

How the tech-stack skill eliminates guesswork when starting a new project by mapping project types to exact, opinionated technology choices.

Every new project begins with a choice: which technologies to use. Left to itself, an AI assistant will guess, ask, or default to whatever it last saw. The tech-stack skill removes that variability by mapping project type to a fixed, opinionated stack — automatically, without asking.

The skill covers frontend, backend, AI/ML, real-time, background jobs, event-driven systems, media processing, and infrastructure. Each category has a required stack. The selection is not a suggestion — it is applied automatically whenever a new project, service, or module is being created.

How selection works

Determination starts by classifying the project type. A static single-page site maps to HTML, Tailwind CSS, and Alpine.js — no SPA framework. A microservice API maps to NestJS with Fastify (mandatory, never Express), PostgreSQL, Prisma, Redis, and NATS. A Python API uses FastAPI, uvicorn, uv for dependency management, and ruff for linting and formatting. A real-time chat service maps to Node.js with Socket.IO or ws, plus Redis.

Two toolchain rules apply across every language. For Python: uv handles dependencies, ruff replaces flake8 and black, pytest is the test runner. For Node/TypeScript: pnpm is the package manager, vitest is for unit tests, Playwright handles E2E. Both enforce pre-commit hooks.

Version discipline

The skill treats version discipline as mandatory, not optional. Every dependency must be the latest stable version. When a new major has breaking API changes, the code adapts — downgrading is only acceptable for a critical, documented, unresolved bug. The motivation is concrete: a prior incident where AI proposed Prisma 6 when Prisma 7 was already the current stable, caught only at audit and requiring rework.

After every dependency install, pnpm outdated or its Python equivalent runs immediately. Zero outdated packages is the pass condition, not a best-effort target.

Hard rules

The skill's forbidden list is explicit: no SPA for landing pages, no backend service without Docker, no floating dependency versions, no missing lock files, no Express when Fastify applies. Docker Compose is required when more than one service is involved. The "one container, one responsibility" constraint is not negotiable. For server backups specifically, restic with Backblaze B2 is the standardized choice — the stack notes it as proven across multiple production servers to avoid revisiting the decision each time.

The tech-stack skill operates alongside the testing skill (which specifies test frameworks per stack) and the systematic-debugging skill (applied when something in the chosen stack breaks). The bigger picture is in what is Datarim.