> This page is for Inicio.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://signalcore.ai/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://signalcore.ai/docs/_mcp/server.

# Conocimiento desde tu repositorio

Si tu producto es software, lo que el agente sabe de él cambia con cada versión. Una GitHub
Action lo mantiene al día: en cada push le envía los documentos que cambiaron, como archivos que
puede **buscar**, y quita los que borraste. No hay nada que instalar en tus servidores.

## Qué indexar

Lo que responde a las preguntas de tus usuarios, escrito para personas:

* **La documentación**: guías, tutoriales, preguntas frecuentes, notas de versión.
* **La ayuda**: artículos del centro de ayuda, si viven en el repositorio.
* **La especificación OpenAPI**, para preguntas sobre tu API.

El código casi nunca responde a un usuario. Indéxalo solo si es lo que preguntan (los ejemplos de
un SDK), y deja fuera los tests, los datos de prueba, los lockfiles y lo generado.

## Configurarlo

#### Crea una clave secreta

Con los permisos `read` y `write`, como explica [la API](/guias/api#crear-una-clave):

**`Consola del navegador, en signalcore.ai/app`**

```js title="Consola del navegador, en signalcore.ai/app"
const answer = await fetch("/api/keys", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ kind: "secret", name: "GitHub", scopes: ["read", "write"] }),
});
console.log((await answer.json()).key); // sk_…: solo se muestra esta vez
```

Guárdala en el repositorio como el secreto `SIGNALCORE_KEY`, en **Settings, Secrets and
variables, Actions**.

#### Di qué debe saber el agente

En `.signalcore/knowledge.yml`. El id del agente está en sus equipos (`GET /v1/squads`).

**`.signalcore/knowledge.yml`**

```yaml title=".signalcore/knowledge.yml"
agent: agt_...          # el agente
include:                # lo que debe saber
  - docs/**
  - "*.md"
  - openapi.json
exclude:                # de eso, lo que no
  - docs/borradores/**
  - CHANGELOG.md
prefix: repo/           # dónde van las copias entre sus archivos (repo/ si no lo dices)
```

Los patrones son como los de `.gitignore`: `*` dentro de una carpeta, `**` a través de
carpetas. Sin `/` valen en cualquier carpeta (`*.md` son todos los Markdown); con `/` empiezan
en la raíz (`docs/**` es todo lo que hay en `docs`).

#### Añade el workflow

**`.github/workflows/signalcore-knowledge.yml`**

```yaml title=".github/workflows/signalcore-knowledge.yml"
name: SignalCore knowledge
on:
  push:
    branches: [main]
  workflow_dispatch:
concurrency: signalcore-knowledge
jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: OmnistGroup/signalcore-sync-knowledge@v1
        with:
          key: ${{ secrets.SIGNALCORE_KEY }}
```

Haz push. La primera vez envía todo lo que dice la configuración; después, solo lo que cambia.

## Cómo funciona

* **Solo lo que cambió.** El agente guarda el último commit enviado (en `repo/.synced`). Cada
  ejecución lo compara con el nuevo: sube lo añadido o cambiado y borra lo que ya no está. Si una
  ejecución falla o no llega a correr, la siguiente se pone al día.
* **Todo de nuevo** la primera vez, cuando cambias la configuración y cuando lo ejecutas a mano
  (**Run workflow**): sube todo lo que dice y borra las copias que ya no tienen archivo.
* **Tus archivos no se tocan.** Las copias guardan su ruta bajo el prefijo (`docs/reembolsos.md`
  es `repo/docs/reembolsos.md`); los archivos propios del agente quedan como están.
* **Lo que no se puede buscar se salta**, con un aviso en la ejecución: binarios (los PDF, Word,
  Excel y PowerPoint sí se indexan), archivos de más de 50 MB y nombres con caracteres que una
  ruta no admite (solo letras, números, espacios y `_ . - ( )`).

Cada archivo se envía con la API, como harías tú:

```bash
curl -X PUT "https://signalcore.ai/v1/agents/agt_.../files/repo/docs/reembolsos.md?searchable=true" \
  -H "Authorization: Bearer $SIGNALCORE_KEY" \
  -H "Content-Type: text/markdown" \
  --data-binary @docs/reembolsos.md
```

Para probar lo que el agente encuentra, busca como él:

```bash
curl "https://signalcore.ai/v1/agents/agt_.../files/search?query=reembolsos" \
  -H "Authorization: Bearer $SIGNALCORE_KEY"
```

> **Note**
>
> Si gestionas organizaciones de clientes, la clave de tu agencia actúa en la de cada uno con
> `org: org_...` en el paso de la action.