Ir al contenido

Skills

chimera-thin-vertical-slice

Construye un único camino estrecho que atraviese todas las capas y se ejecute, antes de construir ninguna capa por completo — una integración que nunca se ha ejecutado es una suposición.

PatrónProcedencia: cleanEstado: activev0.1.0 · Apache-2.0

Conferida por quien revisó y leyó la tarjeta, no reclamada por el propio archivo. Una tarjeta que el agente destila durante una ejecución que consumió contenido no confiable nace contaminada y queda retenida para revisión antes de ser recuperada.

Cuándo viene a la mente

  • empezando una funcionalidad nueva
  • esto necesita CLI, servicio y almacenamiento
  • construyendo primero la abstracción
  • todavía no corre nada
  • armando el esqueleto de un subsistema

Evita y Comprueba es donde suele estar el valor. Haz es la sección que todo el mundo escribe.

El cuerpo de la tarjeta de arriba es una traducción. El original en inglés es lo que importa la CLI, lo que lee el agente en ejecución y lo que atestigua el hash de abajo.

Disparador

Estás empezando un trabajo que abarca capas — un comando que llega a un orquestador que llama a un proveedor que escribe en un almacén — y estás decidiendo qué construir primero. La tentación es construir la capa de abajo por completo, luego la siguiente, y cablearlo todo al final.

No aplica a trabajo que es genuinamente de una sola capa: un parser, un formateador, una función pura. Ahí no hay vertical, e inventar una es ceremonia. Tampoco aplica a un cambio dentro de un sistema que ya funciona de extremo a extremo; ese camino existe, y la rebanada ya está pagada.

Haz

  1. Nombra el observable que producirá la rebanada, como un comando que otra persona podría teclear y una única salida concreta. No «la tubería funciona» — chimera run "hi" imprime una línea que volvió de un proveedor real.
  2. Escribe primero esa invocación, como script o como prueba, y obsérvala fallar por la razón correcta.
  3. Implementa el camino más corto a través de cada capa, degenerado en cada una: un proveedor, sin reintentos, sin archivo de configuración, sin caché, sin concurrencia. Donde algún día vivirá una política, pon una constante.
  4. Mantén real la capa que lleva la incógnita de verdad. Si aún no sabes qué devuelve el proveedor, el proveedor es lo único de la rebanada uno que no debe ser un stub.
  5. Haz commit en el momento en que funciona, antes de generalizar. Ese commit es la evidencia de que las capas encajan.
  6. Ensancha un eje a la vez — segundo proveedor, luego configuración, luego caché — y mantén funcionando el comando del paso 1 después de cada uno. Si se rompe, ese ensanchamiento es el sospechoso.

Evita

Diseñar una interfaz contra cero llamantes. El orden horizontal produce una clase base, seis adaptadores, un registro y una política de reintentos el primer día, y descubre en el momento del cableado que la forma está mal — porque nada le había hecho todavía una pregunta real.


class BaseProvider(ABC): ...
class ProviderRegistry: ...
class RetryPolicy: ...

# Day 1, vertical: ugly, hardcoded, and it answers the question.
def complete(prompt: str) -> str:
    return _post(URL, {"model": MODEL, "prompt": prompt})["choices"][0]["text"]

Evita también la rebanada que es fina en la dimensión equivocada: simular la llamada externa y ejecutar el resto de extremo a extremo. Eso prueba que tus propias capas se ponen de acuerdo entre sí, que nunca era la parte dudosa. La integración que no ejercitaste es la integración que estará mal.

Comprueba

Haz una pregunta binaria: ¿puede alguien que no lo escribió, sobre un checkout limpio, ejecutar un comando y ver la funcionalidad hacer su trabajo de principio a fin? Si la respuesta necesita «bueno, una vez que además simules X» o «después de pegar un token en esa constante» — anota lo segundo honestamente como configuración previa, y trata cualquier salvedad de código como prueba de que todavía no es una rebanada.

Luego revisa git log: ¿hay un commit donde el comando funcionaba y las abstracciones aún no existían? Si el primer commit que funciona es también el commit que introdujo el registro, la rebanada se saltó.

Riesgo

Una rebanada codifica decisiones a fuego, y lo codificado a fuego sobrevive. El fallo habitual es que los pasos 5 y 6 nunca ocurren porque la primera rebanada «funciona», dejando un sistema cuyo único proveedor está soldado y cuyas costuras acabaron donde fue conveniente a la segunda hora. Programa el ensanchamiento como trabajo del mismo lote, no como un seguimiento que nadie financia.

El otro costo es real: llevar la rebanada uno a través de una dependencia externa viva hace que esa primera prueba sea lenta, pagada y ocasionalmente inestable. Grábala y reprodúcela después de que exista — grabar una llamada que nunca has hecho no es posible, que es toda la razón por la que el orden importa.

Cómo usarla

La tarjeta es un dato. Clona el repositorio e impórtala por ruta: lo que llega por la red se trata como contaminado y queda retenido a la espera de aprobación, que es el comportamiento deseable y la razón por la que aquí no hay un instalador de una línea.

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/chimera-thin-vertical-slice/SKILL.md

Integridad

SHA-256 del archivo tal como se publicó. Quien lo importe puede comprobar que lo que recibió es lo que mostró esta página.

cc2b4e8524f6a9a839d70effa69a32287a69eb70dba16321bffb74ae39c302e6

Lee la tarjeta en el repositorio