Back to Skills

tech-stack-evaluator

matteocervelli
Updated Yesterday
15 views
10
10
View on GitHub
Designdesign

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-evaluator

Copy and paste this command in Claude Code to install this skill

GitHub 仓库

matteocervelli/llms
Path: .claude/skills/tech-stack-evaluator

Related Skills

langchain

Meta

LangChain 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.

View skill

Algorithmic Art Generation

Meta

This 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.

View skill

webapp-testing

Testing

This 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.

View skill

requesting-code-review

Design

This 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.

View skill