// "Analyze project requirements and recommend appropriate technology stacks with detailed rationale. Provides primary recommendation, alternatives, and ruled-out options with explanations."
| name | tech-stack-advisor |
| description | Analyze project requirements and recommend appropriate technology stacks with detailed rationale. Provides primary recommendation, alternatives, and ruled-out options with explanations. |
| allowed-tools | ["Read","Grep","Glob","WebSearch","Write"] |
Ready to explore technology stack options?"
Then proceed with the skill's main workflow.
"I don't see .docs/PROJECT-MODE.md or a project brief. No problem - let me gather what I need.To recommend a tech stack, I need to understand:
Once you share these, I can provide tech stack recommendations."
Gather answers conversationally, then proceed with the skill's main workflow.
This skill NEVER blocks on missing prerequisites. It gathers information conversationally and proceeds. Ask user for project information if not provided via handoff documents. 1. Project Description: What does the application do? What problems does it solve? 2. Key Features: List of main features (user auth, real-time updates, file uploads, search, etc.) 3. Complexity Level: Simple / Standard / Complex 4. Timeline: Learning pace / Moderate / Fast 5. Target Users: Who will use this? 6. Expected Traffic: Very low / Low / Moderate / High 7. Budget Constraints: Monthly hosting budget 8. Learning Priorities: What do you want to learn? 9. Similar Projects: Reference projects that inspire this 10. Special Requirements: Real-time, heavy computation, large files, mobile, SEO, offline Check if brief is over-specified (bypasses learning opportunities). - Specific technology mentions (React, Laravel, PostgreSQL) - Implementation patterns ("use async/await", "REST API", "microservices") - Technical architecture details (database schema, API structure) I noticed your brief mentions specific technologies...Options:
Your choice?
Factor in user's experience and learning goals. Remain deployment-neutral. - Beginner-to-intermediate developer - Strong with HTML/CSS/JavaScript - Learning full-stack development - Heavy reliance on Claude Code for implementation This skill focuses ONLY on technology stack decisions (languages, frameworks, databases, patterns). - Do NOT factor in hosting infrastructure when recommending stacks - Do NOT mention specific servers, VPS specs, or deployment targets - Do NOT let "we already have X infrastructure" bias the tech recommendation - The deployment-advisor skill handles all hosting/infrastructure decisions AFTER this phase - Exception: If user EXPLICITLY states a deployment constraint (e.g., "must run on shared PHP hosting"), note it in handoff but still recommend the best technical solution If the user explicitly mentions deployment preferences or constraints: 1. Acknowledge the preference 2. Still recommend the technically best stack for the project requirements 3. Note the user's stated preference in the handoff document under a "User-Stated Constraints" section 4. Let deployment-advisor reconcile tech stack with deployment realities Evaluate Supabase vs PocketBase based on project needs. - Relational database with advanced PostgreSQL features needed - Auth + database + storage + realtime all needed - Real-time subscriptions or WebSocket features required - Vector embeddings needed (pgvector) - Complex queries, full-text search, JSON operations - Future scaling anticipated - Row-level security beneficial - Authentication is primary need (minimal database use) - Simple CRUD operations sufficient - Embedded SQLite appropriate for scale - Single-binary simplicity valued - Project scope is small and well-defined - Vector embeddings required (no pgvector equivalent) - Complex relational queries needed - Real-time subscriptions essential - PostgreSQL-specific features required Recommend additional infrastructure tools when project indicates specific needs. Brief mentions automation, workflows, integrations, scheduled tasks, data pipelines. Examples: "automate user onboarding emails", "sync data between services" Brief mentions embeddings, semantic search, RAG, AI features, content generation. Examples: "semantic search over documents", "AI-powered recommendations" Brief mentions documentation-heavy, knowledge base, team wiki, technical docs. Examples: "internal knowledge base", "project documentation site" Generate comprehensive recommendation. Remain deployment-neutral. 1. Primary Recommendation: Best-fit tech stack with detailed rationale 2. Alternative Options: 2-3 viable alternatives with trade-offs 3. Ruled-Out Options: Stacks that don't fit and why 4. Tech Stack Details: Complete breakdown (NO deployment/hosting details) 5. Learning Opportunities: What this stack will teach 6. Enterprise vs Hacker Analysis: Where each option falls on the spectrum 7. Next Steps: Invoke deployment-advisor (deployment decisions happen THERE) At this phase, focus ONLY on: - Languages, frameworks, libraries - Database technology choices - Architecture patterns (monolith vs microservices, etc.) - Development toolingDo NOT include:
.docs/tech-stack-decision.md
After collaborative refinement and user convergence on recommendation.
Create .docs/ directory if it doesn't exist before writing handoff document. Validate understanding based on PROJECT-MODE.md setting (or gathered mode preference). Answer 3 focused comprehension questions: 1. Why does the primary recommendation fit this project's core need? 2. What is the single most important trade-off if you chose Alternative 1 instead? 3. What is the biggest new responsibility or learning challenge this stack introduces?Rules:
Confirm to proceed.
Quick acknowledgment: "Ready to proceed? [Yes/No]"Examples: TypeScript + Angular + NestJS, Java + Spring Boot, C# + .NET, Go + standard library
Best for: Projects that may grow to multiple developers, long maintenance horizons, regulated industries, risk-averse environments
**Characteristics:** - Dynamic typing or type inference (Python, Ruby, JavaScript) - Lightweight frameworks, minimal boilerplate (Flask, Sinatra, Express) - Convention over configuration - Single-developer productivity optimized - "Move fast" ethos, iterate quickly - Community-driven, often opinionated tools - Pragmatic shortcuts acceptableExamples: Python + Flask, Ruby + Sinatra, Node.js + Express, PHP + Laravel, SQLite + single-file backends
Best for: Solo developers, MVPs, learning projects, rapid prototyping, personal tools, "scratch your own itch" projects
**Characteristics:** - Optional typing (TypeScript with moderate strictness, Python + type hints) - Modern frameworks that balance productivity and structure (Next.js, FastAPI, SvelteKit) - Good defaults with escape hatches - Can scale from solo to small team - Active communities with professional adoptionExamples: Next.js + TypeScript (moderate), FastAPI + Pydantic, SvelteKit, Laravel (PHP)
Best for: Projects that start small but might grow, learning with real-world applicability, balancing speed with maintainability
Always include Enterprise vs Hacker analysis when: - Recommending alternatives (show options across the spectrum) - The project could reasonably be built either way - User's learning goals align with one end of the spectrum - Trade-offs between speed-to-ship and long-term maintainability are relevantFrame as a choice, not a judgment. Neither end is "better"—they optimize for different things.
In the Primary Recommendation and Alternatives: - Label where each option falls: "Enterprise", "Balanced", or "Hacker" - Explain WHY it falls there (specific characteristics) - If recommending a Balanced option, note what Enterprise or Hacker alternatives exist - Let user consciously choose based on their prioritiesStatus: Phase 0: Project Brief (project-brief-writer) Phase 1: Tech Stack Advisor (you are here) Phase 2: Deployment Strategy (deployment-advisor) Phase 3: Project Foundation (project-spinup) <- TERMINATION POINT Phase 4: Test Strategy (test-orchestrator) - optional Phase 5: Deployment (deploy-guide) <- TERMINATION POINT Phase 6: CI/CD (ci-cd-implement) <- TERMINATION POINT
Mention this option when users seem uncertain about their progress.