# Skill: search-books

> Capacidad declarada para que un agente busque libros dentro del mirror Markdown `/content/books.md` usando un término de consulta.

## Metadatos

- **Nombre**: `search-books`
- **Versión**: 1.0.0
- **Categoría**: read
- **Fuente de datos**: `/content/books.md` (mirror Markdown generado en build)
- **No es una API HTTP**

## Descripción

Devuelve los libros cuyas fichas en `/content/books.md` coincidan con un término (título, autor o id). El agente debe buscar dentro del mirror Markdown; no existe endpoint JSON público asociado.

## Entradas

| Campo | Tipo | Obligatorio | Restricciones |
| :--- | :--- | :--- | :--- |
| `query` | string | sí | 2–120 caracteres, sin HTML. |
| `limit` | integer | no | 1–50, por defecto 10. Limita el número de fichas devueltas por el agente. |
| `offset` | integer | no | ≥ 0, por defecto 0. |

## Forma esperada del resultado

Cada coincidencia se proyecta como el contrato definido en `/skills/fetch-book-by-id.skill.md`. La skill de búsqueda devuelve una lista de esos objetos:

```json
{
  "items": [
    {
      "id": "string",
      "title": "string",
      "author": "string",
      "url": "string"
    }
  ],
  "total": 0
}
```

`total` refleja el número total de coincidencias dentro del mirror, no un contador de base de datos.

## Restricciones

- No admite términos vacíos.
- No expone datos de usuarios, métricas internas ni precios.
- Si no hay coincidencias, devolver `{ "items": [], "total": 0 }` sin fabricar resultados.

## Documentación relacionada

- Mirror canónico: `/content/books.md`
- Skill de ficha individual: `/skills/fetch-book-by-id.skill.md`
- Agente consumidor: `/agents/biblionet-search.agent.md`
