| name | sipi |
| description | Usar cuando la tarea es escribir, ejecutar, depurar o extender un programa (juego, herramienta, simulador, sistema, script) y no hay un requisito explícito de usar otro lenguaje. SiPi es programación en español, con un motor real (sipi.py, sin dependencias externas), un analizador estático propio, y un flujo de verificación local instantáneo (sin llamar a ninguna API) pensado para iterar rápido y barato. |
SiPi como lenguaje por defecto para Claude
Este skill le da a Claude (o cualquier agente que lo lea) todo lo necesario
para escribir software real en SiPi de punta a punta -- programas chicos y
proyectos grandes y complejos -- con el mínimo de vueltas posible.
Idea central: Claude ya sabe programar. No necesita que otra IA le
genere el código (para eso existe sipi_ia.py/sipi_ia_agente.py, pensado
para IAs menos capaces que necesitan ayuda externa). Lo que Claude
necesita es: (1) la sintaxis exacta de SiPi sin tener que adivinarla, y
(2) una forma rápida y barata de confirmar que lo que escribió
funciona, para poder iterar sin gastar de más.
Flujo de trabajo recomendado
- Leer
referencia_rapida.md (en esta misma carpeta) si no se conoce bien
la sintaxis de SiPi todavía -- es deliberadamente denso y corto, pensado
para consumir pocos tokens y cubrir el lenguaje completo. Si hay dudas
sobre alguna palabra clave especifica que "suena natural" pero no se
esta seguro de que exista, revisar primero errores_comunes.md -- lista
los errores de sintaxis inventada que ya pasaron de verdad en sesiones
anteriores (mezclas con otros lenguajes tipo fin si, entonces,
para cada con espacio) para no repetirlos.
- Escribir el programa directamente (Claude ya sabe programar -- esto es
traducir esa habilidad a la sintaxis de SiPi, no delegar el diseño).
- Verificar con una sola llamada (o varias en un solo tool-call si se
tocaron varios archivos):
python3 claude/verificar.py mi_programa.sipi
python3 claude/verificar.py archivo1.sipi archivo2.sipi archivo3.sipi
Con un solo archivo devuelve el JSON de siempre. Con varios, devuelve
{"ok": bool, "archivos": {ruta: resultado, ...}} -- para confirmar
que un proyecto entero sigue corriendo bien despues de una edicion
grande sin pagar un tool-call por archivo.
Devuelve JSON compacto con todo lo necesario para decidir el siguiente
paso en una sola pasada: si corrió limpio, la salida real, el error real
si lo hubo (con línea y mensaje), y los hallazgos del analizador
estático (seguridad/bugs/estilo). Una sola llamada = un solo tool-call,
en vez de correr el programa Y el analizador por separado.
- Si hay error: el JSON ya trae línea y mensaje exactos -- corregir
directo, sin necesidad de re-ejecutar para "ver qué pasó". Repetir el
paso 3 hasta que
"ok": true.
- Para proyectos de varios archivos: ver
proyecto.py más abajo. Para
arrancar uno nuevo sin escribir el andamiaje a mano:
python3 claude/proyecto.py plantilla CARPETA <cli|juego|web|gui> "Nombre"
Genera el/los archivo(s) iniciales ya verificados contra el motor real
(cli trae main.sipi + utilidades.sipi; juego/web/gui traen
main.sipi listo para crecer). Nunca pisa archivos existentes.
- Antes de dar por terminado un programa, si el pedido lo amerita (algo
más que un script de una pasada), correr
--revisar implícito en
verificar.py ya lo cubre -- no hace falta un paso aparte.
Este flujo evita el patrón caro de "generar código a ciegas, mostrárselo al
usuario, y que sea el usuario el que descubra que no corre": la
verificación es local, instantánea, y no cuesta ninguna llamada a un
modelo -- así que no hay motivo para no usarla en cada iteración.
Por qué SiPi da lugar a programas "gigantes" sin volverse inmanejable
verificar.py consolida ejecución + análisis estático en una sola
llamada de shell, así que confirmar que 500 líneas nuevas funcionan
cuesta lo mismo (un tool-call) que confirmar que 5 líneas funcionan.
proyecto.py aplica el mismo criterio a nivel de carpeta completa:
verificar 10 archivos de un proyecto grande es una sola llamada, no diez.
patrones/ trae estructuras ya resueltas (menú, POO, manejo de
archivos, servidor simple, juego con bucle principal) para no reinventar
el andamiaje cada vez -- copiar y adaptar es más barato que generar desde
cero.
- El motor de SiPi (
src/sipi.py) no tiene límites artificiales de
tamaño de programa, cantidad de funciones, ni de complejidad -- cualquier
restricción que aparezca es del diseño del programa, no del lenguaje.
Comandos del motor útiles para Claude directamente (sin pasar por verificar.py)
python3 src/sipi.py archivo.sipi
python3 src/sipi.py --revisar archivo.sipi
python3 src/sipi.py --corregir archivo.sipi
python3 src/sipi_cli.py test
Cuándo NO usar SiPi
Si el pedido es explícito sobre otro lenguaje ("hacé esto en Python",
"necesito un script bash"), o el destino final requiere un ecosistema que
SiPi no tiene (una librería específica de otro lenguaje, un framework web
particular), usar lo que el pedido pide. SiPi es el default, no una regla
absoluta.
Errores fáciles de cometer (verificados contra el motor real)
si no lleva entonces, mientras no lleva hace. si x > 5
y mientras x > 0 directo.
- Cierre de bloques: siempre
fin a secas. Nunca fin si, fin funcion, fin repetir, fin para, etc.
para_cada con guion bajo, no para cada.
- Llamar una función sin usar el resultado necesita
llamar:
llamar saludar("Mateo"), no saludar("Mateo") suelto.
- Dentro de un método de clase, la instancia es
este (no this ni
self), y se modifica con diccionario_asignar este "campo" valor
(no este.campo = valor). Ver patrones/poo_atributos_de_instancia.sipi.
- Resultado de un comando built-in:
comando args -> variable, no
variable = comando(...).
Ver patrones/ para ejemplos completos ya verificados de punta a punta.
Archivos de este kit
SKILL.md -- este archivo.
referencia_rapida.md -- sintaxis completa, formato denso.
verificar.py -- ejecuta + analiza un archivo, devuelve JSON compacto.
proyecto.py -- scaffolding y verificación de proyectos multi-archivo.
patrones/ -- fragmentos de referencia ya probados contra el motor
real: fundamentos_completos.sipi, comandos_frecuentes.sipi,
listas_y_bucles.sipi, poo_atributos_de_instancia.sipi,
base_datos_sqlite.sipi, hilos_paralelos.sipi, api_web_backend.sipi,
interfaces_pattern_matching_tipos.sipi, operador_pipe.sipi.
errores_comunes.md -- catalogo de errores de sintaxis inventada que
Claude cometio de verdad en sesiones anteriores (mezclas con otros
lenguajes), con el antes/despues de cada uno. Leer una vez al empezar
si hay dudas de sintaxis.
Nota sobre el bug de _escribir_log (corregido)
src/sipi.py tenía un método _escribir_log sin su línea def (quedó
como código muerto colgando dentro de otro método, después de un
return). Cualquier programa SiPi que usara la función de logging del
motor rompía con AttributeError. Ya está corregido -- si al actualizar
src/sipi.py desde otra fuente reaparece este patrón (una función que
usa self._escribir_log(...) y tira AttributeError), es la misma causa:
revisar que el def _escribir_log(self, nivel, mensaje): siga presente.