tech-stack-evaluator
About
This skill automatically activates during requirements analysis to evaluate technical stack compatibility and recommend appropriate technologies. It analyzes existing project stacks, assesses performance implications, and checks dependency compatibility. Developers can use it for technology selection, migration assessments, and scalability evaluations.
Documentation
Purpose
The tech-stack-evaluator skill provides systematic evaluation of technical stack requirements and compatibility for feature implementations. It analyzes existing project technology, recommends appropriate libraries/frameworks, assesses compatibility, and identifies performance implications.
When to Use
This skill auto-activates when you:
- Evaluate technical stack requirements
- Assess technology compatibility
- Recommend frameworks or libraries
- Analyze performance implications
- Check language/framework suitability
- Review dependency compatibility
- Evaluate migration needs
- Assess scalability of technology choices
Provided Capabilities
1. Technology Stack Analysis
- Identify current project stack (language, framework, libraries)
- Evaluate stack maturity and support
- Check version compatibility
- Assess ecosystem health
2. Library/Framework Recommendation
- Recommend appropriate libraries for requirements
- Compare alternatives
- Evaluate pros/cons
- Check community support and maintenance
3. Compatibility Assessment
- Check compatibility with existing stack
- Identify version conflicts
- Assess breaking changes
- Evaluate upgrade paths
4. Performance Analysis
- Evaluate performance characteristics
- Identify bottlenecks
- Assess scalability
- Consider resource requirements
5. Technology Constraints
- Identify platform limitations
- Check deployment constraints
- Assess infrastructure requirements
- Evaluate licensing constraints
Usage Guide
Step 1: Identify Current Project Stack
Check project configuration files:
Python Projects:
# Check Python version and dependencies
python --version
cat requirements.txt
cat pyproject.toml
cat setup.py
cat Pipfile
# Check installed packages
pip list
TypeScript/JavaScript Projects:
# Check Node version and dependencies
node --version
cat package.json
cat package-lock.json
cat yarn.lock
Rust Projects:
# Check Rust version and dependencies
rustc --version
cat Cargo.toml
cat Cargo.lock
Document Current Stack:
## Current Project Stack
### Language & Runtime
- **Language**: Python 3.11
- **Package Manager**: uv
- **Virtual Environment**: venv
### Framework
- **Web Framework**: FastAPI 0.104.0
- **ORM**: SQLAlchemy 2.0.23
- **Validation**: Pydantic 2.5.0
### Key Dependencies
- `httpx`: 0.25.2 (HTTP client)
- `redis`: 5.0.1 (Caching)
- `pytest`: 7.4.3 (Testing)
### Infrastructure
- **Database**: PostgreSQL 15
- **Cache**: Redis 7
- **Server**: Uvicorn
Step 2: Analyze Feature Requirements
Based on extracted requirements, identify technology needs:
Example Requirements:
- "Real-time data synchronization" → WebSockets, async I/O
- "File processing" → File handling libraries
- "API integration" → HTTP client
- "Data validation" → Validation library
- "Background tasks" → Task queue
Technology Mapping:
## Technology Requirements
| Requirement | Technology Need | Current Support | Gap |
|-------------|----------------|-----------------|-----|
| Real-time updates | WebSockets | ✅ FastAPI supports | None |
| Data validation | Schema validation | ✅ Pydantic | None |
| Background tasks | Task queue | ❌ No task queue | Need Celery/RQ |
| File uploads | File handling | ✅ Built-in | None |
| PDF generation | PDF library | ❌ No PDF lib | Need reportlab |
Step 3: Recommend Technologies
Use tech-stack-matrix.md to match requirements with technologies:
Python Recommendations:
Web Frameworks:
- FastAPI: Modern, async, auto-docs (recommended for APIs)
- Django: Full-featured, ORM included (for full web apps)
- Flask: Lightweight, flexible (for simple apps)
Database Libraries:
- SQLAlchemy: Powerful ORM, wide DB support
- Django ORM: Tightly integrated with Django
- asyncpg: Async PostgreSQL driver (high performance)
Validation:
- Pydantic: Type-based validation, FastAPI integration
- marshmallow: Schema validation, serialization
- cerberus: Lightweight validation
HTTP Clients:
- httpx: Modern, async support (recommended)
- requests: Synchronous, widely used
- aiohttp: Async HTTP client/server
Task Queues:
- Celery: Mature, feature-rich
- RQ (Redis Queue): Simple, Redis-based
- Dramatiq: Simple, reliable
Testing:
- pytest: Most popular, plugin ecosystem
- unittest: Built-in, standard library
- hypothesis: Property-based testing
Step 4: Evaluate Compatibility
Check for compatibility issues:
Version Compatibility:
# Example: Check Python version requirements
import sys
if sys.version_info < (3, 10):
raise RuntimeError("Requires Python 3.10+")
Dependency Conflicts:
# Check for dependency conflicts
pip check
# Analyze dependency tree
pip-tree
pipdeptree
Compatibility Matrix:
## Compatibility Assessment
### Python Version Compatibility
- **Current**: Python 3.11
- **Required**: Python 3.10+ (for new libraries)
- **Status**: ✅ Compatible
### Framework Compatibility
| Library | Required Version | Current Version | Compatible | Notes |
|---------|-----------------|-----------------|------------|-------|
| FastAPI | ≥0.100.0 | 0.104.0 | ✅ | Compatible |
| Pydantic | ≥2.0.0 | 2.5.0 | ✅ | Compatible |
| SQLAlchemy | ≥2.0.0 | 2.0.23 | ✅ | Compatible |
| New: Celery | ≥5.3.0 | - | ✅ | No conflicts |
| New: reportlab | ≥4.0.0 | - | ✅ | No conflicts |
### Breaking Changes
- None identified for proposed libraries
Step 5: Assess Performance Implications
Evaluate performance characteristics using language-feature-map.md:
Performance Considerations:
Async I/O (Python asyncio, FastAPI):
- Pros: High concurrency, efficient I/O handling
- Cons: Complexity, requires async-aware libraries
- Use When: Many concurrent connections, I/O-bound operations
Database Performance:
- ORM Overhead: SQLAlchemy adds ~10-20% overhead vs raw SQL
- Mitigation: Use bulk operations, eager loading, query optimization
Caching Strategy:
- Redis: In-memory, microsecond latency
- Application Cache: In-process, nanosecond latency
- Recommendation: Use Redis for shared cache, application cache for read-heavy data
Serialization:
- JSON: Standard, slow for large payloads
- MessagePack: Binary, 2-3x faster than JSON
- Protobuf: Schema-based, fastest, smallest
## Performance Assessment
### Expected Performance Characteristics
- **API Response Time**: <200ms (target), FastAPI typically achieves 50-100ms
- **Database Query Time**: <50ms (with proper indexing)
- **Caching Hit Rate**: >80% (target)
- **Concurrent Users**: 1000+ (FastAPI handles well with async)
### Performance Optimizations
1. **Use Connection Pooling**: SQLAlchemy connection pool (size=20)
2. **Implement Caching**: Redis for frequently accessed data
3. **Async I/O**: Use httpx async client for external APIs
4. **Database Indexing**: Add indexes on frequently queried columns
5. **Background Processing**: Use Celery for heavy computations
### Performance Risks
- **Risk**: Large file uploads could block event loop
- **Mitigation**: Use streaming uploads, background processing
- **Risk**: N+1 query problem with ORM
- **Mitigation**: Use eager loading (joinedload, selectinload)
Step 6: Identify Constraints
Document technical constraints:
Platform Constraints:
## Technical Constraints
### Platform Requirements
- **OS**: Linux (Ubuntu 22.04+) or macOS
- **Python**: 3.10+ (for match statements, improved typing)
- **Database**: PostgreSQL 14+ (for JSON improvements)
- **Memory**: 2GB minimum, 4GB recommended
- **Storage**: 10GB for application + dependencies
### Deployment Constraints
- **Container**: Docker-compatible
- **Environment**: Supports environment variables
- **Network**: Outbound HTTPS required for external APIs
- **Ports**: 8000 (application), 5432 (database), 6379 (Redis)
### Licensing Constraints
- All proposed libraries use permissive licenses (MIT, Apache 2.0, BSD)
- No GPL dependencies (avoid copyleft)
- Commercial use permitted
### Development Constraints
- **IDE**: VS Code, PyCharm (type checking support)
- **Type Checking**: mypy required in CI/CD
- **Code Formatting**: Black, isort
- **Testing**: pytest with 80%+ coverage
Step 7: Compare Alternatives
When multiple options exist, create comparison:
## Technology Alternatives
### Task Queue Comparison
| Feature | Celery | RQ | Dramatiq |
|---------|--------|----|---------|
| **Maturity** | High (2009) | Medium (2011) | Medium (2016) |
| **Complexity** | High | Low | Low |
| **Broker** | RabbitMQ/Redis | Redis only | RabbitMQ/Redis |
| **Performance** | High | Medium | High |
| **Monitoring** | Flower | RQ Dashboard | Basic |
| **Learning Curve** | Steep | Gentle | Gentle |
| **Recommendation** | ⭐ Enterprise | ⭐ Simple | ⭐ Middle ground |
**Recommendation**: Use RQ for this project
- **Reasoning**: Already using Redis, simple requirements, faster learning curve
- **Trade-off**: Less features than Celery, but sufficient for current needs
Step 8: Create Technology Recommendation
Synthesize findings into recommendation:
## Technology Stack Recommendation
### New Libraries to Add
1. **RQ (Redis Queue)** - Background Task Processing
- **Version**: 1.15.1+
- **Purpose**: Process file uploads, send emails asynchronously
- **Justification**: Simple, integrates with existing Redis, sufficient for needs
- **Alternative Considered**: Celery (too complex for current requirements)
2. **reportlab** - PDF Generation
- **Version**: 4.0.7+
- **Purpose**: Generate PDF reports
- **Justification**: Mature, feature-rich, good documentation
- **Alternative Considered**: WeasyPrint (CSS-based, but slower)
3. **httpx** - Async HTTP Client
- **Version**: 0.25.2+ (already using, version OK)
- **Purpose**: Make async external API calls
- **Justification**: Modern, async support, timeout handling
- **Alternative Considered**: aiohttp (more complex API)
### No Changes Required
- **FastAPI**: Current framework suitable for requirements
- **Pydantic**: Current validation library sufficient
- **SQLAlchemy**: Current ORM handles database needs
- **pytest**: Current testing framework adequate
### Version Updates
None required - all current versions compatible with new libraries
### Compatibility Verification
✅ All proposed libraries compatible with:
- Python 3.11
- FastAPI 0.104.0
- Existing dependency versions
### Performance Impact
**Expected Improvements**:
- Background tasks don't block API responses (+50% perceived responsiveness)
- Async external API calls improve throughput (+30% under load)
**Minimal Overhead**:
- RQ: <5% overhead for task queuing
- reportlab: Only used on-demand for PDF generation
Best Practices
1. Prefer Existing Stack
- Leverage technologies already in use
- Avoid introducing new languages/frameworks without strong justification
- Consider team familiarity
2. Evaluate Maturity
- Prefer mature, well-maintained libraries
- Check last update date (< 6 months ideal)
- Review GitHub stars, issues, contributors
- Check PyPI downloads for Python packages
3. Consider Ecosystem
- Strong community support
- Good documentation
- Active development
- Compatible with existing tools
4. Performance Testing
- Benchmark critical paths
- Load test under realistic conditions
- Profile to find bottlenecks
- Measure, don't assume
5. Future-Proofing
- Choose actively maintained libraries
- Prefer libraries with stable APIs
- Consider migration paths
- Avoid deprecated technologies
6. Security Considerations
- Check for known vulnerabilities (CVEs)
- Evaluate security track record
- Consider security features
- Review security advisories
Resources
tech-stack-matrix.md
Comprehensive matrix of:
- Popular libraries by category
- Framework comparisons
- Performance characteristics
- Compatibility notes
- Use case recommendations
language-feature-map.md
Language-specific features:
- Python async/await capabilities
- TypeScript type system features
- Rust ownership model
- Performance characteristics
- Best practices
Example Usage
Input (Feature Requirements)
Feature: User notification system
- Send email notifications
- In-app real-time notifications
- Background processing for bulk sends
- Track delivery status
Output (Tech Stack Evaluation)
## Technical Stack Evaluation
### Current Stack Analysis
- **Language**: Python 3.11 ✅
- **Framework**: FastAPI 0.104.0 ✅ (WebSocket support for real-time)
- **Database**: PostgreSQL 15 ✅
- **Cache**: Redis 7 ✅
### Required Technologies
1. **Task Queue**: RQ 1.15.1
- **Purpose**: Background email sending
- **Justification**: Integrates with existing Redis, simple API
- **Performance**: Handles 1000+ tasks/minute
2. **Email Library**: python-email-validator + SMTP
- **Purpose**: Email validation and sending
- **Justification**: Standard library sufficient, no extra dependencies
- **Alternative**: SendGrid (if high volume needed)
3. **WebSocket**: FastAPI built-in
- **Purpose**: Real-time in-app notifications
- **Justification**: Already supported by FastAPI
- **Performance**: Handles 10,000+ concurrent connections
4. **Notification Storage**: PostgreSQL (existing)
- **Purpose**: Store notification history
- **Justification**: Existing database, JSON column support
- **Performance**: Adequate with proper indexing
### Compatibility Assessment
✅ All technologies compatible with existing stack
✅ No version conflicts
✅ No breaking changes required
### Performance Expectations
- **Email Send**: 100-200ms (backgrounded via RQ)
- **Real-time Push**: <50ms via WebSocket
- **Database Write**: <10ms
- **Overall**: <200ms API response (tasks queued)
### Recommendation
**Proceed with proposed stack** - all requirements met with minimal additions
Integration
This skill is used by:
- analysis-specialist agent during Phase 1: Requirements Analysis
- Activates automatically when agent evaluates tech stack
- Provides technology assessment for analysis document generation
Version: 2.0.0 Auto-Activation: Yes (when evaluating tech stack) Phase: 1 (Requirements Analysis) Created: 2025-10-29
Quick Install
/plugin add https://github.com/matteocervelli/llms/tree/main/tech-stack-evaluatorCopy and paste this command in Claude Code to install this skill
GitHub 仓库
Related Skills
langchain
MetaLangChain is a framework for building LLM applications using agents, chains, and RAG pipelines. It supports multiple LLM providers, offers 500+ integrations, and includes features like tool calling and memory management. Use it for rapid prototyping and deploying production systems like chatbots, autonomous agents, and question-answering services.
Algorithmic Art Generation
MetaThis skill helps developers create algorithmic art using p5.js, focusing on generative art, computational aesthetics, and interactive visualizations. It automatically activates for topics like "generative art" or "p5.js visualization" and guides you through creating unique algorithms with features like seeded randomness, flow fields, and particle systems. Use it when you need to build reproducible, code-driven artistic patterns.
webapp-testing
TestingThis Claude Skill provides a Playwright-based toolkit for testing local web applications through Python scripts. It enables frontend verification, UI debugging, screenshot capture, and log viewing while managing server lifecycles. Use it for browser automation tasks but run scripts directly rather than reading their source code to avoid context pollution.
requesting-code-review
DesignThis skill dispatches a code-reviewer subagent to analyze code changes against requirements before proceeding. It should be used after completing tasks, implementing major features, or before merging to main. The review helps catch issues early by comparing the current implementation with the original plan.
