feat: mejorar init-jupyter para detectar notebooks existentes
Ahora el skill detecta si ya hay archivos .ipynb en el repo o carpeta notebooks. Si existen, simplemente inicia Jupyter via MCP sin reinicializar el proyecto. Se garantiza que siempre use MCP para la integración con Claude. Se agrega Glob a las herramientas permitidas para la detección. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,80 +1,116 @@
|
||||
---
|
||||
name: init-jupyter
|
||||
description: Inicializa un proyecto Python con uv, Jupyter Lab y configura MCP para Claude
|
||||
description: Inicializa o inicia Jupyter Lab via MCP. Detecta notebooks existentes automáticamente.
|
||||
argument-hint: [ruta-proyecto]
|
||||
disable-model-invocation: true
|
||||
user-invocable: true
|
||||
allowed-tools: Bash, Read, Write, Edit
|
||||
allowed-tools: Bash, Read, Write, Edit, Glob
|
||||
---
|
||||
|
||||
# Inicializar Proyecto Jupyter
|
||||
# Inicializar/Iniciar Proyecto Jupyter via MCP
|
||||
|
||||
Este skill automatiza la configuración completa de un entorno de análisis de datos con Jupyter Lab integrado con Claude via MCP.
|
||||
Este skill gestiona entornos Jupyter Lab integrados con Claude via MCP. Detecta automáticamente si ya existe un proyecto configurado.
|
||||
|
||||
## Pasos a ejecutar
|
||||
## Flujo de decisión
|
||||
|
||||
1. **Validar ubicación**
|
||||
- Si se proporciona `$1`, usar esa ruta
|
||||
- Si no, usar el directorio actual
|
||||
### 1. Detectar notebooks existentes
|
||||
|
||||
2. **Inicializar proyecto con uv**
|
||||
```bash
|
||||
cd [ruta] && uv init
|
||||
```
|
||||
Buscar archivos `.ipynb` en:
|
||||
- Raíz del proyecto
|
||||
- Carpeta `notebooks/`
|
||||
- Cualquier subcarpeta
|
||||
|
||||
3. **Crear entorno virtual**
|
||||
```bash
|
||||
uv venv
|
||||
```
|
||||
```bash
|
||||
find [ruta] -name "*.ipynb" -type f 2>/dev/null | head -5
|
||||
```
|
||||
|
||||
4. **Instalar dependencias**
|
||||
```bash
|
||||
uv add jupyter jupyter-collaboration
|
||||
```
|
||||
### 2. Si HAY notebooks existentes → Iniciar directamente
|
||||
|
||||
5. **Instalar jupyter-mcp-server**
|
||||
```bash
|
||||
uv tool install jupyter-mcp-server
|
||||
```
|
||||
**2a. Verificar que MCP está configurado**
|
||||
- Comprobar si existe `.claude/settings.local.json` con configuración de jupyter
|
||||
- Si no existe, crearlo (ver paso 6 del flujo de inicialización)
|
||||
|
||||
6. **Configurar MCP para Claude**
|
||||
- Crear o actualizar `.claude/settings.local.json` con la configuración del servidor MCP de Jupyter:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"jupyter": {
|
||||
"command": "jupyter-mcp-server",
|
||||
"args": []
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
**2b. Verificar que jupyter-mcp-server está instalado**
|
||||
```bash
|
||||
which jupyter-mcp-server || uv tool install jupyter-mcp-server
|
||||
```
|
||||
|
||||
7. **Crear script de lanzamiento** `start-jupyter.sh`:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
source .venv/bin/activate
|
||||
.venv/bin/jupyter lab --no-browser --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.disable_check_xsrf=True
|
||||
```
|
||||
**2c. Iniciar Jupyter via MCP**
|
||||
```bash
|
||||
source .venv/bin/activate 2>/dev/null || true
|
||||
jupyter lab --no-browser --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.disable_check_xsrf=True
|
||||
```
|
||||
|
||||
8. **Mostrar resumen al usuario** con los comandos para:
|
||||
- Activar el entorno: `source .venv/bin/activate`
|
||||
- Lanzar Jupyter: `./start-jupyter.sh` o el comando directo
|
||||
**2d. Informar al usuario** que Jupyter está corriendo y puede usar las herramientas MCP de Jupyter desde Claude.
|
||||
|
||||
### 3. Si NO hay notebooks → Inicializar proyecto completo
|
||||
|
||||
Seguir estos pasos:
|
||||
|
||||
**3a. Validar ubicación**
|
||||
- Si se proporciona `$1`, usar esa ruta
|
||||
- Si no, usar el directorio actual
|
||||
|
||||
**3b. Inicializar proyecto con uv** (si no existe pyproject.toml)
|
||||
```bash
|
||||
cd [ruta] && uv init
|
||||
```
|
||||
|
||||
**3c. Crear entorno virtual**
|
||||
```bash
|
||||
uv venv
|
||||
```
|
||||
|
||||
**3d. Instalar dependencias**
|
||||
```bash
|
||||
uv add jupyter jupyter-collaboration
|
||||
```
|
||||
|
||||
**3e. Instalar jupyter-mcp-server**
|
||||
```bash
|
||||
uv tool install jupyter-mcp-server
|
||||
```
|
||||
|
||||
**3f. Configurar MCP para Claude**
|
||||
Crear o actualizar `.claude/settings.local.json`:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"jupyter": {
|
||||
"command": "jupyter-mcp-server",
|
||||
"args": []
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**3g. Crear carpeta notebooks** (opcional)
|
||||
```bash
|
||||
mkdir -p notebooks
|
||||
```
|
||||
|
||||
**3h. Iniciar Jupyter via MCP**
|
||||
```bash
|
||||
source .venv/bin/activate
|
||||
jupyter lab --no-browser --NotebookApp.token='' --NotebookApp.password='' --NotebookApp.disable_check_xsrf=True
|
||||
```
|
||||
|
||||
## Ejemplos de uso
|
||||
|
||||
**Inicializar en directorio actual:**
|
||||
**Iniciar/inicializar en directorio actual:**
|
||||
```bash
|
||||
/init-jupyter
|
||||
```
|
||||
|
||||
**Inicializar en ruta específica:**
|
||||
**Iniciar/inicializar en ruta específica:**
|
||||
```bash
|
||||
/init-jupyter ~/proyectos/mi-analisis
|
||||
```
|
||||
|
||||
## Notas
|
||||
## Notas importantes
|
||||
|
||||
- Si el proyecto ya tiene `pyproject.toml`, preguntar antes de sobrescribir
|
||||
- El script `start-jupyter.sh` se crea con permisos de ejecución
|
||||
- **Siempre usa MCP**: Jupyter se ejecuta siempre de forma que Claude pueda interactuar via MCP
|
||||
- Si detecta notebooks existentes, NO reinicializa el proyecto, solo inicia Jupyter
|
||||
- Si el proyecto ya tiene `pyproject.toml`, no ejecuta `uv init`
|
||||
- La configuración MCP se guarda en `.claude/settings.local.json` del proyecto
|
||||
- El servidor MCP permite a Claude crear, editar y ejecutar celdas de notebooks
|
||||
|
||||
Reference in New Issue
Block a user