# Cómo contribuir a 🤗 LeRobot

Todos son bienvenidos a contribuir, y valoramos la contribución de cada persona. El código no es la única forma de ayudar a la comunidad. Responder preguntas, ayudar a otros, establecer contacto y mejorar la documentación son de inmenso valor.

Sea cual sea la forma en que decidas contribuir, ten en cuenta la importancia de respetar nuestro [código de conducta](https://github.com/huggingface/lerobot/blob/main/CODE_OF_CONDUCT.md) y nuestra [política de IA](https://github.com/huggingface/lerobot/blob/main/AI_POLICY.md).

## Formas de contribuir

Puedes contribuir de muchas formas:

- **Corrección de problemas:** Soluciona errores o mejora el código existente.
- **Nuevas funciones:** Desarrolla nuevas funciones.
- **Extender:** Implementar nuevos modelos/políticas, robots o entornos de simulación y subir conjuntos de datos al Hugging Face Hub.
- **Documentación:** Mejorar ejemplos, guías y docstrings.
- **Comentarios:** Envía tickets relacionados con errores o nuevas funciones deseadas.

**¿Añadiendo nuevo hardware?** Los robots, teleoperadores y cámaras suelen funcionar mejor como un paquete de plugin independiente que como un cambio en la biblioteca principal. Sigue [Bring Your Own Hardware](https://huggingface.co/docs/lerobot/integrate_hardware#using-your-own-lerobot-devices-), publica tu paquete y luego abre un PR para añadirlo a [Third-Party Robots & Teleoperators](https://huggingface.co/docs/lerobot/third_party_robots) o [Third-Party Cameras & Sensors](https://huggingface.co/docs/lerobot/third_party_sensors).

Si no sabes por dónde empezar, únete a nuestro [canal de Discord](https://discord.gg/s3KuuzsPFb).

## Configuración de desarrollo

Para contribuir con código, necesitas configurar un entorno de desarrollo.

### 1. Hacer un fork y clonar

Haz una bifurcación del repositorio en GitHub y luego clona tu bifurcación:

```bash
git clone https://github.com/<your-handle>/lerobot.git
cd lerobot
git remote add upstream https://github.com/huggingface/lerobot.git
```

### 2. Instalación del entorno

Siga nuestra [Guía de instalación](https://huggingface.co/docs/lerobot/installation) para la configuración del entorno y la instalación desde el código fuente.

## Ejecución de pruebas y controles de calidad

### Estilo de código (Pre-commit)

Instala los hooks de `pre-commit` para ejecutar comprobaciones automáticamente antes de que hagas un commit:

```bash
pre-commit install
```

Para ejecutar comprobaciones manualmente en todos los archivos:

```bash
pre-commit run --all-files
```

### Docstrings

La referencia de la API se genera a partir de las docstrings en `src/lerobot/`. Si agregas o modificas algo público, sigue el [estándar de docstring](https://huggingface.co/docs/lerobot/writing_docstrings): el formato se analiza con el renderer y se verifica en CI.

### Ejecutar pruebas

Usamos `pytest`. Primero, asegúrate de tener los artefactos de prueba instalando **git-lfs**:

```bash
git lfs install
git lfs pull
```

Ejecuta la suite completa (esto puede requerir la instalación de extras):

```bash
pytest -sv ./tests
```

O ejecuta un archivo de prueba específico durante el desarrollo:

```bash
pytest -sv tests/test_specific_feature.py
```

La CI de pruebas rápidas ejecuta un nivel por cada extra (`base`, `dataset`, `hardware`, `viz`) y selecciona las pruebas de cada nivel con una marca de pytest. Si tu prueba necesita el extra `dataset`, `hardware` o `viz`, márcala (`pytestmark = pytest.mark.dataset` para todo un archivo, `@pytest.mark.dataset` para una sola prueba). Las pruebas sin marca se ejecutan solo en el nivel `base`, donde una prueba que necesite un extra se omite. Para ejecutar un nivel localmente:

```bash
pytest -sv tests -m dataset
```

Los tests de CI de GPU solo ejecutan las pruebas marcadas con `gpu`. Cada prueba bajo `tests/policies` y cada prueba `@require_cuda` la obtiene automáticamente; marca cualquier otra prueba que use CUDA con `@pytest.mark.gpu`.

## Envío de problemas y solicitudes de extracción

Utilice las plantillas para los campos obligatorios y los ejemplos.

- **Problemas:** Sigue la [plantilla de ticket](https://github.com/huggingface/lerobot/blob/main/.github/ISSUE_TEMPLATE/bug-report.yml).
- **Solicitudes de extracción (pull requests):** Rebasea en `upstream/main`, usa una rama descriptiva (no trabajes en `main`), ejecuta `pre-commit` y las pruebas localmente, y sigue la [plantilla de PR](https://github.com/huggingface/lerobot/blob/main/.github/PULL_REQUEST_TEMPLATE.md).

> [!IMPORTANT]
> Política de revisión de la comunidad: Para ayudar a escalar nuestros esfuerzos y fomentar un entorno colaborativo, pedimos a los colaboradores que revisen al menos una PR abierta de otra persona antes de que la suya reciba atención. Esta responsabilidad compartida multiplica nuestra capacidad de revisión y ayuda a que el código de todos se integre más rápido.

Una vez que hayas enviado tu PR y completado una revisión por pares, un miembro del equipo de LeRobot revisará tu contribución.

Gracias por contribuir a LeRobot.

