Dibuja mi repo

Leer la salud

GET https://seerepo.com/api/v1/repos/:repo/health

Devuelve Salud como se lee en la app: la nota de 0 a 100 con su banda y lo que le quita cada dimensión (pruebas, limpieza, riesgo del cambio, seguridad y errores reales), y las tareas abiertas, la primera primero, cada una con su porqué, sus archivos y el prompt para tu agente. Para tus agentes trae además si se puede publicar y qué lo impide. Los textos van en inglés, como el resto de la API.

Petición

Parámetro Dónde Descripción
repo ruta El id del repo, o owner/name con %2F.
curl "https://seerepo.com/api/v1/repos/6ad79fd8e89233277ded17c9/health" \
  -H "Authorization: Bearer $SEEREPO_KEY"

Respuesta

Campo Tipo Descripción
data.repo object El repo: su id, su nombre y su owner/name.
data.score object La nota: value (0 a 100), band (good, regular o attention, la decide lo más grave abierto), dims (los puntos que quita cada dimensión que quita alguno) y, cuando la banda topa la cifra, ceiling; trend es cuánto se movió en la semana (change contra la foto diaria de since, de hace 7 a 14 días), o null sin una foto tan vieja. Los puntos y el tope dan la cifra exacta.
data.gate object ¿Se puede publicar?: pass, rows[] (lo que lo impide o todavía no se comprueba: tests, las pruebas fallan; noCi, no corren solas; ciUnseen, están montadas y todavía no se vieron correr; grave, algo grave abierto; hidden, páginas que Google no ve, con n) y passing[] (lo que pasa).
data.hasCi boolean Si las pruebas del repo corren solas en cada push.
data.open number Cuántas tareas hay abiertas.
data.bySeverity object Cuántas son graves (high), moderadas (medium) y leves (low).
data.tasks[] object Cada tarea, la primera primero: su key, kind, severity, dimension, points (lo que gana la nota al arreglarla), title, why, files, prompt y openedAt; past cuando su dimensión pasó su techo (of, lo que suma la dimensión, su ceiling, y without, lo que sumaría sin esta tarea: la nota no se mueve hasta bajar del techo); y falseFiles cuando algunos de sus archivos se marcaron como falsos (cada uno con su path, why, via, at, by y changeId). Vacío en un repo gratis.
data.marked[] object Las tareas que el dueño marcó como falsas, pospuso o aceptó enteras: no quitan puntos. Cada una con su key, kind, severity, title, files y mark (kind: false, snooze o accept; until, why, via, at, by y changeId). Mira los cambios del MCP.
data.todos number Cuántas notas pendientes hay en el código: un TODO o un FIXME que abre un comentario o va pegado a «:» o «(». Cada una sale también en la tarea todos.
data.plan string full, o free en un repo del vistazo gratis: la nota, su banda, la puerta, cuántas tareas hay y el título de la primera, como en la app.
data.firstTitle string o null En un repo del vistazo gratis, el título de la primera tarea, sin sus archivos, su arreglo ni su prompt. Null en cualquier otro plan, y cuando no hay nada grave ni moderado abierto.

Ejemplo

{
  "status": "success",
  "data": {
    "repo": { "id": "6ad79fd8e89233277ded17c9", "name": "shop", "fullName": "you/shop" },
    "score": { "value": 54, "band": "attention", "dims": { "tests": 15, "cleanup": 10 }, "ceiling": 54 },
    "gate": { "pass": false, "rows": [{ "key": "tests", "state": "fail" }], "passing": [{ "key": "grave" }, { "key": "hidden", "n": 12 }] },
    "hasCi": true,
    "open": 3,
    "bySeverity": { "high": 1, "medium": 0, "low": 2 },
    "tasks": [
      {
        "key": "ci",
        "kind": "ci",
        "severity": "high",
        "dimension": "tests",
        "points": 15,
        "title": "The automatic tests fail",
        "why": "They failed the last time they ran, on the main branch.",
        "files": [],
        "prompt": "The automatic tests of my project shop fail (CI): …",
        "openedAt": "2026-10-18T14:02:11.000Z"
      }
    ],
    "todos": 1,
    "plan": "full",
    "firstTitle": null
  }
}