Install
openclaw skills install tech-stack-evaluationEvaluate whether a project's current tech stack is appropriate for its goals, and recommend alternatives when maintainability, performance, or feature expansion is blocked. Trigger on 'is there a better tech stack', 'what stack should I use', 'should we rewrite this', or maintainability concerns. Produces evidence-based recommendations with effort-vs-payoff analysis.
openclaw skills install tech-stack-evaluationEvaluate whether a project's current tech stack is appropriate for its goals, and recommend alternatives when maintainability, performance, or feature expansion is blocked.
debug-issue insteaddraft-feature-planBefore recommending a stack change, understand what the user is actually solving for. Ask (or infer from context):
| Concern | Signal | Typical Fix |
|---|---|---|
| Performance | "slow on large datasets", "takes forever to load" | Optimize data layer (Polars, DuckDB, caching), not necessarily frontend framework |
| Maintainability | "hard to extend", "everything is coupled", "adding a feature touches 4 files" | Structural refactor (split monoliths, consolidate APIs, add type safety) |
| Feature expansion | "need real-time updates", "need multi-user", "need mobile app" | Add capabilities (WebSocket, DB persistence, React Native) |
| Team growth | "onboarding new developers", "need documentation" | Add types, tests, component library, not necessarily new framework |
| Deployment/hosting | "Railway is expensive", "need to scale" | Evaluate hosting alternatives, containerization, serverless |
| Modernization | "this feels old", "want to use current best practices" | Incremental upgrades (TypeScript, testing, CI) rather than rewrite |
Critical insight: Most "tech stack" questions are actually maintainability or structural questions. A React rewrite won't fix a 1,400-line monolithic processor. A type system won't help if the API has 51 endpoints where 15 would suffice.
Use the codebase-survey skill's maintainability audit to produce evidence:
# File size audit
find . -type f \( -name "*.py" -o -name "*.js" -o -name "*.ts" -o -name "*.tsx" \) -not -path "*/node_modules/*" -not -path "*/.git/*" -not -path "*/venv/*" | xargs wc -l | sort -rn | head -20
# Method/function count audit
grep -c "def " app/core/allocation.py # Python methods
grep -c "@router." app/api/routes.py # FastAPI endpoints
grep -c "function " app/static/js/charts.js # JS functions
Produce a maintainability grade (A-F) with specific targets.
| Layer | Current | What it does well | What it blocks |
|---|---|---|---|
| Backend framework | |||
| Data processing | |||
| Frontend | |||
| State management | |||
| Styling | |||
| Charts/visualization | |||
| Hosting | |||
| Persistence |
Present 2-3 options ordered by effort vs. payoff:
| Option | Effort | Payoff | When to choose |
|---|---|---|---|
| Minimal (structural refactor) | Low | Medium | Maintainability is the only concern, stack is otherwise fine |
| Incremental (modernize frontend) | Medium | High | Frontend is the pain point, backend is solid |
| Full (new stack) | High | Maximum | Multiple blockers, team growth, or multi-platform needs |
For each option, specify:
Every recommendation must reference the evidence:
AllocationProcessor (1,402 lines, 36 methods) into 5 focused processors" — not "use a better framework"This is a common pattern for data-heavy internal tools. The typical evolution:
| Stage | Stack | Pain Point | Next Step |
|---|---|---|---|
| 1 | FastAPI + Pandas + Vanilla JS | Works for 1-2 users, 5-10 charts | None needed |
| 2 | Same stack, files grow | Adding charts requires 4-file changes | Split processors, consolidate API |
| 3 | Same stack, 30+ charts, multi-user | No persistence, no sharing, frontend is spaghetti | Add React + TypeScript, consider DB |
| 4 | Growth continues | Performance issues with large datasets | Polars/DuckDB, caching, materialized views |
Keep FastAPI when:
Add React when:
Add persistence when: