Metadata-Version: 2.4
Name: lambda-forge-cli-aws
Version: 1.0.1
Summary: Zero to Lambda production-ready in 60 seconds, with Kiro specs included. Powered by Amazon Bedrock + AWS CDK.
Project-URL: Homepage, https://github.com/lambdaforge/lambdaforge
Project-URL: Documentation, https://lambdaforge.dev/docs
Project-URL: Repository, https://github.com/lambdaforge/lambdaforge
Project-URL: Issues, https://github.com/lambdaforge/lambdaforge/issues
Author-email: LambdaForge Team <team@lambdaforge.dev>
License: Apache-2.0
License-File: LICENSE
Keywords: aws,bedrock,cdk,developer-tools,kiro,lambda,scaffolding
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development
Requires-Python: >=3.12
Requires-Dist: boto3>=1.34.0
Requires-Dist: click>=8.1.7
Requires-Dist: cookiecutter>=2.5.0
Requires-Dist: gitpython>=3.1.40
Requires-Dist: jinja2>=3.1.3
Requires-Dist: pydantic>=2.5.0
Requires-Dist: pyyaml>=6.0.1
Requires-Dist: questionary>=2.0.1
Requires-Dist: rich>=13.7.0
Provides-Extra: dev
Requires-Dist: freezegun>=1.4.0; extra == 'dev'
Requires-Dist: moto[apigateway,dynamodb,lambda,s3,sqs]>=5.0.0; extra == 'dev'
Requires-Dist: mypy>=1.10.0; extra == 'dev'
Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.4.0; extra == 'dev'
Description-Content-Type: text/markdown

﻿# LambdaForge

> **Despliega proyectos AWS Lambda listos para producción en 60 segundos — con specs generadas por IA, ARM64 por defecto, y mejores prácticas Well-Architected integradas.**

[![AWS](https://img.shields.io/badge/AWS-Lambda-FF9900?logo=amazonaws&logoColor=white)](https://aws.amazon.com/lambda/)
[![Python 3.12](https://img.shields.io/badge/Python-3.12-3776AB?logo=python&logoColor=white)](https://www.python.org/)
[![Kiro](https://img.shields.io/badge/Kiro-Specs-7900FF)](https://kiro.dev)
[![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)
[![PyPI](https://img.shields.io/pypi/v/lambda-forge-cli-aws)](https://pypi.org/project/lambda-forge-cli-aws/)

LambdaForge es una **herramienta CLI** que genera un proyecto completo de AWS Lambda con un solo comando, genera **Kiro specs automáticamente** usando Amazon Bedrock, y despliega mediante **AWS CDK**. Elimina las 2-3 horas de código repetitivo que todo desarrollador serverless repite en cada nuevo proyecto.

## ¿Por qué LambdaForge?

Cada vez que inicias un nuevo proyecto Lambda debes:

1. ✍️ Configurar `pyproject.toml`, `requirements.txt`, `.gitignore`
2. 🏗️ Escribir el handler, logger, tracer, métricas
3. 📐 Configurar DynamoDB, IAM, API Gateway en CDK
4. 🧪 Conectar pytest + moto para pruebas
5. 🚀 Construir un pipeline CI/CD con GitHub Actions
6. 📝 Escribir specs en `.kiro/specs/`

**LambdaForge hace todo esto en 60 segundos**, y usa **Amazon Bedrock (Claude Sonnet 4.5)** para auto-generar tus `.kiro/specs/` basándose en lo que tu proyecto debe hacer.

## Arquitectura

```
┌─────────────────┐
│   Desarrollador │
│   $ lambdaforge │
│     new         │
└────────┬────────┘
         │
         ▼
┌─────────────────┐      ┌──────────────────┐
│   CLI (Click)   │─────▶│ Amazon Bedrock   │
│   - new         │      │ Claude Sonnet 4.5│
│   - upgrade     │      └─────────┬────────┘
│   - templates   │                │
│   - deploy      │                ▼
└────────┬────────┘      ┌──────────────────┐
         │               │ Kiro Specs (.md) │
         │               └──────────────────┘
         ▼
┌─────────────────┐
│  Cookiecutter   │  (5 plantillas: api, cron, queue, stream, s3)
│  + CDK + Tests  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Proyecto listo │  -> git init -> git push -> cdk deploy
└─────────────────┘
```

## Características

- 🏗️ **5 Plantillas Listas para Producción**: REST API, Cron Programado, Cola SQS, Stream Kinesis, Evento S3
- 🤖 **Specs Generadas por IA**: Kiro specs auto-generadas por Amazon Bedrock (Claude Sonnet 4.5)
- 🏎️ **ARM64 por Defecto**: 20% más barato, 19% más rápido que Lambda x86_64
- 🔒 **Tags Well-Architected**: Todos los recursos etiquetados con `Project`, `Environment`, `CostCenter`, `ManagedBy`
- 📊 **Observabilidad Integrada**: aws-lambda-powertools (logger, tracer, metrics) preconfigurado
- 🧪 **Pruebas con moto**: Mocking de AWS para CI local sin llamadas reales a AWS
- 🚀 **CI/CD con OIDC**: Workflow de GitHub Actions usando OIDC (sin claves AWS de larga duración)
- 💰 **Optimizado para Free Tier**: Diseñado para caber en el AWS Free Tier
- 🌐 **Roadmap Multi-Lenguaje**: Python (ahora), TypeScript, Go, Rust (próximamente)

## Inicio Rápido

### Instalación

```bash
# Desde PyPI
pip install lambda-forge-cli-aws

# Desde código fuente
git clone https://github.com/lambdaforge/lambdaforge
cd lambdaforge
pip install -e ".[dev]"
```

### Crear un nuevo proyecto Lambda

```bash
lambdaforge new

# Prompts interactivos:
# ? Project name: my-awesome-api
# ? Template: python-api
# ? Description: REST API for user management
# ? Author: Ada Lovelace
# ? Email: ada@example.com
# ? AWS region: us-east-1

# Genera el proyecto completo + Kiro specs en 60 segundos:
#  ✓ Rendering template
#  ✓ Generating Kiro specs via Bedrock
#  ✓ Initializing git
#  ✓ Project ready at ./my-awesome-api

cd my-awesome-api
ls -la
# .kiro/
#   specs/
#     00-overview.md              (generado por IA)
#     01-architecture.md          (generado por IA)
#     02-acceptance-criteria.md   (generado por IA)
#     03-implementation-plan.md   (generado por IA)
# src/
#   handler.py
#   utils/logger.py
# tests/
#   conftest.py
#   test_handler.py
# infrastructure/
#   app.js
#   cdk.json
#   lib/my-awesome-api-stack.js
# .github/workflows/
#   deploy.yml
# Dockerfile
# pyproject.toml
# README.md
```

### Desplegar en AWS

```bash
cd my-awesome-api
npx cdk bootstrap  # solo la primera vez
npx cdk deploy
# o mediante LambdaForge (incluye empaquetado de dependencias + barra de progreso)
lambdaforge deploy
lambdaforge deploy --env staging
lambdaforge deploy --env prod
```

### Actualizar un proyecto existente

¿Ya tienes una Lambda pero quieres aplicar las mejores prácticas de LambdaForge?

```bash
cd my-existing-lambda
lambdaforge upgrade

# Detecta: Python 3.11, sin observabilidad, sin pruebas
# Añade: aws-lambda-powertools, pytest+moto, CI/CD
# Actualiza: Python 3.12, ARM64, tags Well-Architected
# Preserva: Tu lógica de negocio
```

## Plantillas

| Plantilla | Trigger | Caso de Uso | Estado |
|-----------|---------|-------------|--------|
| `python-api` | API Gateway | APIs REST/HTTP | ✅ Estable |
| `python-cron` | EventBridge Schedule | Tareas programadas | ✅ Estable |
| `python-queue` | SQS | Workers asíncronos | ✅ Estable |
| `python-stream` | Kinesis | Analítica en tiempo real | ✅ Estable |
| `python-s3` | S3 Events | Procesamiento de archivos | ✅ Estable |
| `typescript-api` | API Gateway | Lambdas Node.js | 🔜 Roadmap |
| `go-stream` | Kinesis | Alto rendimiento | 🔜 Roadmap |

## Estructura del Proyecto

```
lambdaforge/
├── src/lambdaforge/
│   ├── __init__.py         # Versión, metadatos
│   ├── cli.py              # CLI basada en Click (modo interactivo + directo)
│   ├── templates.py        # 5 definiciones de plantillas
│   ├── renderer.py         # Wrapper de Cookiecutter
│   ├── bedrock_client.py   # Wrapper de la API de Amazon Bedrock
│   ├── spec_generator.py   # Generador de Kiro specs con IA
│   ├── upgrade.py          # Modo actualización para Lambdas existentes
│   ├── status.py           # Estado del proyecto y recursos
│   ├── logs.py             # Visor de logs de CloudWatch
│   └── deploy.py           # Wrapper de despliegue CDK (bootstrap/destroy)
├── templates/
│   ├── python-api/         # Plantilla REST API (Cookiecutter)
│   ├── python-cron/        # Plantilla tareas programadas
│   ├── python-queue/       # Plantilla cola SQS
│   ├── python-stream/      # Plantilla stream Kinesis
│   └── python-s3/          # Plantilla eventos S3
│       └── {{cookiecutter.project_slug}}/
│           ├── src/        # Código Lambda + powertools
│           ├── tests/      # pytest + moto
│           ├── infrastructure/  # CDK JavaScript
│           ├── .github/workflows/  # CI/CD + Dependabot
│           └── ...
├── infrastructure/         # CDK para la propia API de LambdaForge
│   ├── app.py
│   ├── cdk.json
│   └── lib/lambdaforge_stack.py
├── tests/                  # Pruebas unitarias de LambdaForge
│   ├── conftest.py
│   ├── test_cli.py
│   ├── test_templates.py
│   ├── test_renderer.py
│   ├── test_bedrock_client.py
│   └── test_spec_generator.py
├── .kiro/
│   ├── specs/              # Specs propias de LambdaForge
│   │   ├── 00-overview.md
│   │   ├── 01-architecture.md
│   │   ├── 02-acceptance-criteria.md
│   │   └── 03-implementation-plan.md
│   └── steering/           # Estándares de desarrollo
│       ├── code-standards.md
│       ├── testing.md
│       ├── security.md
│       ├── templates.md
│       └── aws-best-practices.md
├── .github/workflows/      # CI/CD para LambdaForge
│   ├── ci.yml
│   └── release.yml
├── pyproject.toml
├── LICENSE                  # Apache-2.0
├── CONTRIBUTING.md
├── CHANGELOG.md
└── README.md
```

## Cómo Funciona

### 1. Selección de Plantilla
LambdaForge incluye **plantillas Cookiecutter** preconfiguradas para cada patrón Lambda. Las plantillas se almacenan en `templates/` y se renderizan con los valores específicos del proyecto.

### 2. Kiro Specs Generadas por IA
Después de renderizar la plantilla, LambdaForge llama a **Amazon Bedrock** con el nombre del proyecto, descripción y plantilla elegida. Bedrock (usando **Claude Sonnet 4.5**) genera 4 archivos de specs en el formato de Kiro:

- `00-overview.md`: Descripción general del proyecto
- `01-architecture.md`: Arquitectura del sistema con servicios AWS
- `02-acceptance-criteria.md`: Criterios de aceptación verificables
- `03-implementation-plan.md`: Plan de implementación por fases

### 3. Mejores Prácticas Integradas
Cada proyecto generado incluye:

- **aws-lambda-powertools**: logging estructurado, trazas X-Ray, métricas CloudWatch
- **Pydantic**: validación de entrada
- **Arquitectura ARM64**: 20% de reducción de costos vs x86_64
- **Tags Well-Architected**: Project, Environment, CostCenter, ManagedBy
- **CloudWatch Dashboard**: Dashboard preconfigurado para cada stack
- **OIDC para CI/CD**: Sin claves AWS de larga duración en GitHub

### 4. Despliegue con un Solo Comando
`lambdaforge deploy` ejecuta `npx cdk deploy` con manejo de errores adecuado, reporte de progreso y rollback en caso de fallo.

## Estimación de Costos

LambdaForge en sí tiene costos mínimos:

| Recurso | Costo |
|---------|-------|
| Amazon Bedrock (Claude Sonnet 4.5) | ~$0.003 por generación de specs |
| Lambda (comando upgrade) | <$0.0001 por invocación |
| **Total por nuevo proyecto** | **~$0.003** |

Los proyectos que LambdaForge genera están diseñados para caber en el **AWS Free Tier**.

## Seguridad

- ✅ **Sin claves AWS de larga duración**: Usa OIDC para CI/CD
- ✅ **IAM de mínimo privilegio**: Cada Lambda obtiene un rol limitado
- ✅ **Validación con Pydantic**: Todas las entradas validadas
- ✅ **Logging estructurado con Powertools**: Sin PII en los logs
- ✅ **Secretos via AWS Secrets Manager**: Nunca en variables de entorno

## Pruebas

```bash
# Pruebas unitarias + integración (usa moto - sin llamadas reales a AWS)
pytest

# Con cobertura
pytest --cov=src --cov-report=html

# Verificación de tipos
mypy src/

# Linting
ruff check .
```

## Roadmap

- [ ] Publicar en PyPI
- [ ] Plantilla `typescript-api`
- [ ] Plantilla `go-stream`
- [ ] UI web interactiva para usuarios sin CLI
- [ ] Detección de desviación de specs (regenerar cuando el código cambia)
- [ ] Despliegue multi-región
- [ ] Estimación de costos antes del despliegue

## Contribuir

¡Las contribuciones son bienvenidas! Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para las guías de contribución.

## Licencia

Apache-2.0 © 2026 LambdaForge Contributors

## Construido con Kiro

Este proyecto fue construido usando [Kiro](https://kiro.dev) — el IDE potenciado por IA que convierte specs en código desplegable. Todos los archivos `.kiro/specs/` de LambdaForge y de cada proyecto que genera están escritos en el formato estructurado de Kiro.

## Agradecimientos

- **Equipo de Kiro** por el flujo de desarrollo dirigido por specs
- **Equipo de AWS Lambda** por la plataforma serverless
- **Anthropic** por Claude (via Amazon Bedrock)
