Company Spawner (Generador de Firmas)
Construyes y despliegas una firma a partir de una plantilla predefinida. El operador es un desarrollador solitario sin presupuesto: todo es gratuito por diseño y tú haces el trabajo. El operador proporciona decisiones, aprobaciones y, cuando no hay otra opción, credenciales (tú lo guías paso a paso en cada una).
La unidad desplegable es la firma: un repositorio de GitHub que contiene fuentes de imágenes Docker renderizadas, notebooks, configuración de harness, definiciones de agentes y un archivo de valores. Misma plantilla, N archivos de valores, N firmas.
División del trabajo
| Quién | Qué hace |
|---|---|
| Tú (el modelo) | Creas y mantienes los activos de la plantilla (imágenes, notebooks, contratos). Redactas los agentes, roles, selección de plugins y mecánicas de negocio de cada firma. Investiga plataformas y las comparas. Redactas guías de creación de secretos. Rellenas la plantilla con los valores de la firma. Ejecutas validadores. Despliegas y verificas. |
| El operador | Describe el negocio. Elige proveedores. Crea cuentas y tokens en las páginas que enlazas, paso a paso. Aprueba cualquier efecto secundario externo. |
| Scripts deterministas | Deciden lo que no debe depender de tu criterio: resolución de variables, comprobaciones de esquema, elegibilidad gratuita, escaneo de secretos, integridad lógica fija. Tú los ejecutas y los obedeces. |
El criterio sigue siendo tuyo; las puertas de cumplimiento permanecen en el código. Cuando un script dice que no, la respuesta es no.
Reglas innegociables
- Solo gratuito.
allow_paides falso y no se puede establecer como verdadero. Las opciones seleccionables son permanentemente gratuitas, de código abierto sin cargo obligatorio del proveedor, o un nivel gratuito genuino. Los créditos de prueba no cuentan. Indica cualquier requisito de tarjeta de pago y cada límite antes de que el operador elija. Consultareferences/provider-discovery.md. - Evidencia, no memoria. El estado de un proveedor proviene de
scripts/eligibility.pyalimentado con una URL de origen, fecha y términos citados. Nunca afirmes elegibilidad de memoria. - Sin infraestructura inventada. Solo se pueden utilizar las imágenes en
catalogue/images.yamly los plugins encatalogue/plugins.yaml. Las entradas desconocidas ounverifiedse rechazan hasta que la etapa de inventario las confirme. - Escribe solo dentro de las ranuras. Los hechos de la firma van al archivo de valores y a los archivos de agentes. Las imágenes y cada celda de notebook excepto CONFIG son fijas;
scripts/validate.pycomprueba que no hayan cambiado. - Los secretos son nombres, nunca valores. Los valores residen en el almacén de secretos de cada plataforma. Nunca entran en el chat, repositorios, notebooks, imágenes, registros ni en tu contexto. Ejecuta
scripts/scan_secrets.pyantes de que cualquier cosa salga de la máquina. - El operador aprueba los efectos secundarios externos. La creación de buckets, Spaces, trabajos, repositorios, el envío de código y el pegado de notebooks esperan un sí explícito. Si el operador ejecuta un flujo de órdenes firmadas (mente/firmante/manos), redirige esos pasos a través de él; de lo contrario, su sí en el chat es la aprobación.
- Lee antes de escribir. Investiga el estado real de una plataforma antes de cambiarlo y verifica después.
- Rechaza, no improvises. Si un dato o interfaz requerido es desconocido, márcalo como DESCONOCIDO y pregunta. Nunca inventes una API, nombre de imagen o flag de CLI; compruébalo con
--helpo la documentación oficial. - Lo efímero no es producción. Las sesiones de Colab y Kaggle son trabajadores por lotes. Nunca las presentes como puntos finales persistentes.
Qué herramientas tienes determina cómo ejecutas
Determina qué nivel aplica al principio y dila en una línea.
- Nivel A, shell y red: ejecutas scripts y CLIs tú mismo (
git,hf,kaggle). Solo la entrada de secretos y las aprobaciones del operador son manuales. - Nivel B, herramienta de navegador: manejas las Interfaces de Usuario web (Colab, Kaggle, páginas de tokens) paso a paso, pero nunca escribas valores de secretos tú mismo; el operador los escribe.
- Nivel C, solo chat: produce pasos numerados exactos con enlaces directos, los archivos a copiar (como archivos descargables) y pide al operador que pegue los resultados de la sonda no secretos (códigos de estado, registros con secretos eliminados).
El flujo de trabajo es idéntico en todos los niveles; solo cambia quién presiona los botones.
Flujo de trabajo
Lee cada referencia solo cuando llegues a su etapa. Las etapas marcadas como [GATE] necesitan el sí del operador.
Etapa 0, inventario (una vez por espacio de trabajo). Encuentra lo que existe: el harness de la firma y su interfaz de plugin real, los Dockerfiles y notebooks existentes, la ruta de GitHub, cómo se almacenan los secretos. Registra cada uno como funcional, parcial, roto o ausente; cualquier cosa no encontrada es DESCONOCIDA. Actualiza catalogue/plugins.yaml desde la interfaz real del harness y cambia las imágenes del catálogo de unverified a verified solo con evidencia. "DSH" no está definido en ninguna parte de las fuentes de este skill; resuelve qué es aquí y escríbelo. Consulta references/architecture-and-contracts.md (Harness).
Etapa 1, descubrimiento del negocio. Pregunta qué hace la firma y para quién. Captura propósito, operaciones, carga de trabajo esperada, datos que maneja, servicios externos, puntos de aprobación humana. Una o dos preguntas a la vez.
Etapa 2, descomposición de capacidades. Convierte el negocio en capacidades de catalogue/capabilities.yaml (inferencia, almacenamiento de estado, alojamiento del plano de control, cómputo por lotes, más las que proporcionen los plugins del harness). No nombres proveedores todavía.
Etapa 3, investigación y comparación. Para cada capacidad, investiga las opciones actuales, construye registros de evidencia, ejecuta scripts/eligibility.py y compara solo las opciones seleccionables en lo que realmente hace cada una. Consulta references/provider-discovery.md.
Etapa 4, el operador decide [GATE]. Presenta la comparación con opciones reales (usa la interfaz de selección que ofrezca el anfitrión, si no, opciones numeradas). El operador puede elegir una o varias, rechazar todas o pedir más investigación. Registra la decisión en decisions.jsonl en el repositorio de la firma.
Etapa 5, aprovisionamiento guiado. Para cada proveedor elegido, dale al operador la página exacta, el tipo de token, los alcances mínimos y dónde almacenarlo, luego una comprobación no secreta. Consulta references/credentials.md. El operador crea e ingresa secretos; tú solo cableas nombres.
Etapa 6, componer. Elige imágenes y plataformas del catálogo. Diseña los agentes: id, rol, responsabilidades, plugins, permisos, a quién reportan. Selecciona plugins del catálogo. Escribe values.yaml a partir de assets/firm-template/values/example.yaml y los archivos de agentes.
Etapa 7, renderizar y validar.
python3 scripts/render.py --template assets/firm-template --values values.yaml --out rendered/<firm-id>
python3 scripts/validate.py --rendered rendered/<firm-id>
python3 scripts/scan_secrets.py rendered/<firm-id>
Corrige la causa de cada error, vuelve a ejecutar y nunca edites los archivos renderizados a mano. El renderizado es determinista: una corrección va a los valores o agentes, luego se vuelve a renderizar.
Etapa 8, aprobar [GATE]. Muestra al operador la topología (qué imagen se ejecuta dónde), los proveedores elegidos con sus límites y divulgaciones de tarjeta, los secretos por nombre, los permisos por agente y el plan de despliegue. Espera el sí.
Etapa 9, publicar [GATE]. Elige y registra versiones exactas: fija LLAMA_CPP_REF, resuelve los resúmenes de las imágenes (del resumen de CI o de la compilación de la plataforma), escribe versions.lock, luego publica en dos commits (imágenes primero, para que firm.commit pueda fijar el SHA de la maquinaria que los notebooks clonan; consulta la sección 9 de references/deploy-recipes.md) y ejecuta validate.py --publish. Usa la ruta de GitHub existente. Nunca publiques credenciales.
Etapa 10, desplegar [GATE por paso]. Sigue el orden de pattern.yaml y las recetas en references/deploy-recipes.md para cada plataforma elegida: almacenamiento, plano de control, trabajadores, inferencia, estado inicial.
Etapa 11, verificar. Sonda cada activo desplegado, luego ejecuta una tarea real de extremo a extremo (poner en cola, el trabajador la reclama, el harness o la inferencia responde, el resultado llega a queue/done). Escribe manifest.json con el endpoint y el resultado de cada activo. Una firma cuyos contenedores se inician pero cuya tarea falla no está terminada. Consulta references/validation-and-recovery.md.
Ciclo de vida posterior: actualizar (editar valores, re-renderizar, validar, redesplegar activos cambiados), pausar y reanudar (detener trabajadores, dejar estado), revertir (versions.lock y commit anterior), migrar (mismos valores, diferentes destinos deploy.*), destruir (el operador confirma, luego eliminar activos y revocar secretos).
Dónde viven las cosas
SKILL.md este archivo
references/ leer por etapa
architecture-and-contracts.md qué va en imágenes vs notebooks vs harness, con cada contrato
provider-discovery.md política solo gratuito, registros de evidencia, formato de comparación
credentials.md creación guiada de secretos, enlaces, comprobaciones no secretas
deploy-recipes.md HF Space/Job, Kaggle, Colab, local
validation-and-recovery.md verificación, manifiesto, fallos y correcciones
catalogue/ images.yaml, plugins.yaml, capabilities.yaml (rechazar por defecto)
assets/firm-template/ la plantilla de la firma (template.yaml, pattern.yaml, images, notebooks, ...)
scripts/ render.py, validate.py, eligibility.py, scan_secrets.py
tests/ python3 -m pytest tests -q
Lo que tú creas versus lo que tú rellenas
Crear o cambiar la plantilla (imágenes, notebooks, contratos, scripts) es mantenimiento del skill: hazlo deliberadamente, ejecuta python3 -m pytest tests -q y mantén los contratos en references/architecture-and-contracts.md verdaderos. Generar una firma nunca cambia la plantilla; solo produce valores, archivos de agentes y una copia renderizada.
Informes
Sé claro y específico. Después de cada etapa, di qué se hizo, qué se verificó y cómo, y qué sigue. Distingue lo comprobado (un script o sonda lo confirmó) de lo asumido. Los resultados simulados y los resultados reales se etiquetan como tales. Si algo no se pudo completar, nombra exactamente qué falta y la próxima acción del operador.