Awesome-omni-skill sw-tech-stack-planner

Use when user wants a tech stack recommendation, technology choices, docker-compose setup, or architecture decisions for a software project – reads vision.md, user-stories.md, use-cases.md and generates requirements/tech-stack.yaml silently.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/sw-tech-stack-planner" ~/.claude/skills/diegosouzapw-awesome-omni-skill-sw-tech-stack-planner && rm -rf "$T"
manifest: skills/development/sw-tech-stack-planner/SKILL.md
source content

SW Tech Stack Planner

Overview

Reads all available requirements files and recommends the best modern, production-ready tech stack for the project. Outputs a clean YAML file at

requirements/tech-stack.yaml
. Operates silently – no file content shown in the chat.

Language detection: Read the user's input language and respond in that language. Default to German if undetectable.


Required Input – Check in Order

Read all files that exist and combine the information:

  1. requirements/vision.md
    – project type, complexity, target audience
  2. requirements/user-stories.md
    – feature scope, integrations needed
  3. requirements/use-cases.md
    – flows, actor interactions, edge cases

If none exist and no input is given, stop and respond:

No requirements files found. Run

/sw-idea-analyzer
first, or describe your project directly:
/sw-tech-stack-planner <your description>


Stack Selection Rules

Always Docker-First

Every recommendation must include:

  • Full
    docker-compose.yml
    ready to run with
    docker compose up
  • All services (database, cache, backend, frontend) in containers
  • Named volumes for data persistence
  • Environment variables via
    .env
    file (never hardcoded)
  • Health checks on database services

Database

Project typeDefault choice
Relational data, complex queriesPostgreSQL
Simple relational, small projectMySQL / MariaDB
Cache, sessions, queuesRedis (always add if backend has async work)
Document / flexible schemaMongoDB
Multi-model / graphNeo4j or ArangoDB

Always include Testcontainers when the language/framework supports it (Java, Kotlin, Go, .NET, Node.js).

Frontend

Signal from requirementsRecommendation
Complex UI, dashboard, SPANext.js 15 (App Router) + TypeScript
Static / content siteAstro or Next.js static export
Mobile appReact Native + Expo
Admin panel onlyshadcn/ui + Next.js
Simple form / landing pageNext.js or plain HTML

Backend

Signal from requirementsRecommendation
REST API, moderate complexityNestJS (Node.js) or FastAPI (Python)
High performance, concurrencyGo (Gin / Fiber) or Rust (Axum)
Enterprise / Java shopSpring Boot 3
Full-stack in one repoNext.js API routes or tRPC
Real-time / websocketsNestJS + Socket.io
Data-heavy / ML pipelineFastAPI + Celery

Auth

RequirementChoice
SaaS, social login, managedClerk or Auth.js
Self-hosted, full controlKeycloak (Docker)
Simple JWT, own usersNestJS JWT + Passport or Spring Security

Testing

Always recommend a layered testing strategy:

  • Unit: Jest / Vitest (TS), pytest (Python), JUnit 5 (Java)
  • Integration: Testcontainers (real DB in Docker per test run)
  • E2E: Playwright
  • API: Supertest (NestJS) or httpx (FastAPI)

Deployment

ScaleChoice
Small / hobbyCoolify (self-hosted) or Railway
Production / teamDocker Compose on VPS + Traefik reverse proxy
Kubernetes scaleHelm chart on k3s or managed K8s
Serverless preferenceVercel (frontend) + Supabase (backend)

Output Format

Write

requirements/tech-stack.yaml
with these exact sections:

project:
  name: ""
  type: ""           # web-app | api | mobile | cli | fullstack
  complexity: ""     # simple | medium | complex

frontend:
  framework: ""
  language: ""
  ui_library: ""
  state_management: ""
  notes: ""

backend:
  framework: ""
  language: ""
  runtime: ""
  notes: ""

database:
  primary: ""
  cache: ""
  orm: ""
  migrations: ""

auth:
  solution: ""
  strategy: ""       # jwt | session | oauth
  notes: ""

testing:
  unit: ""
  integration: ""
  e2e: ""
  api: ""
  testcontainers: true | false

deployment:
  strategy: ""
  reverse_proxy: ""
  ci_cd: ""
  registry: ""

docker:
  compose_version: "3.9"
  services: []       # list all service names
  volumes: []
  networks: []

rationale:
  frontend: ""       # 1-2 sentences why this choice
  backend: ""
  database: ""
  auth: ""
  deployment: ""

Output Rules

  • Never output the YAML or any file content in the chat.
  • Do not show tech stack details, code blocks, or configuration in the chat response.
  • The only chat output allowed is the confirmation lines.
  • Use the user's language in the
    rationale
    field values.

File Output

Steps:

  1. If
    requirements/
    does not exist:
    mkdir -p requirements
  2. Analyze all available inputs and select the best stack
  3. Write the complete YAML to
    requirements/tech-stack.yaml
  4. Print only these lines to the chat:

✅ File created:

requirements/tech-stack.yaml
This is now the official tech stack for all following coding skills.

One optional summary sentence max (e.g. "Recommended Next.js 15 + NestJS + PostgreSQL + Docker stack with Testcontainers."). No YAML, no code blocks, no full output.


Next Skill

Next steps:

  • Run
    /sw-use-case-coder UC-001
    to generate production-ready code for a specific use case
  • Run
    /sw-use-case-coder all MVP
    to scaffold all MVP use cases at once