Pregunta a Claude Code sobre los datos de tu banco: crea una Skill de open banking

Claude Code es excelente razonando sobre datos, y con una pequeña Skill puede razonar sobre los datos de tu banco, en local. Pregúntale «¿cuánto gasté el mes pasado?» o «¿qué conexiones bancarias necesito volver a conectar?» y Claude Code te responde ejecutando el CLI openbanking en tu máquina. Como open-banking.io es zero-knowledge, cada cifra que lee se descifra en el dispositivo con tu propia clave: no se envía nada a terceros para obtener la respuesta.

Esta guía crea esa skill en un solo archivo y la muestra funcionando.

¿Qué es una Skill?

Una Skill de Claude Code es una carpeta con un SKILL.md (un poco de frontmatter YAML más instrucciones en markdown) que Claude carga cuando es relevante. El description del frontmatter le dice a Claude cuándo usarla; el cuerpo le dice cómo. Las Skills pueden aprobar de antemano herramientas concretas para que se ejecuten sin pedir confirmación. La nuestra envuelve el CLI openbanking para que Claude pueda leer cuentas y transacciones cuando haga falta. (Documentación completa: code.claude.com/docs/skills.)

Requisitos previos

  1. Claude Code instalado.
  2. El CLI openbanking, instalado y autenticado. Si aún no lo has configurado, sigue la guía del CLI; en resumen:
brew install open-banking-io/tap/openbanking
openbanking login

Comprueba que funciona:

openbanking accounts

Crea la skill

Guárdalo como ~/.claude/skills/open-banking/SKILL.md:

---
name: open-banking
description: Read and analyze the user's own bank accounts and transactions locally with the openbanking CLI. Use whenever they ask about their balances, spending, income, a statement, a specific transaction, or which bank connections need attention. Data is decrypted on-device (zero-knowledge) — nothing is sent to a third party.
allowed-tools: Bash(openbanking*)
---

# open-banking

Answer questions about the user's real bank data by shelling out to the `openbanking` CLI. Every
response the CLI returns is decrypted locally with the user's own key — the service only stores
ciphertext. Work only through the CLI; never touch the credentials file directly.

## Setup check

Before anything else, confirm the CLI is installed and authenticated:

    openbanking accounts -o json

- If the command is not found, tell the user to install it and stop.
- If it errors with "no credentials … run `openbanking login`", tell them to authenticate. Don't proceed.

## Commands and their JSON

Always pass `-o json`. Always pass an explicit `<account-id>` to `transactions` — a bare `transactions`
in a terminal opens an interactive picker that will hang.

- `openbanking accounts -o json` → `[{ id, name, accountNumber, type, balance, currency, bank }]`.
  `accountNumber` is the IBAN; `balance` is an exact decimal string.
- `openbanking transactions <account-id> -o json [--from YYYY-MM-DD --to YYYY-MM-DD --limit N --offset N]`
  → `{ items: [{ id, date, amount, currency, counterparty, info, status }], shown, total }`.
  `amount` is a signed decimal string — debits negative, credits positive. `status` is `BOOK` or `PDNG`.
- `openbanking connections -o json` → `[{ bank, country, status, accountCount, psuType, validUntil,
  lastSyncedAt, sessionId }]`. `status = RequiresReauth` means the user must reconnect that bank.
- `openbanking sync <account-id>` / `openbanking sync --all` → refreshes from the bank. Prints a
  plain-text summary (not JSON) and is a side effect — re-read `transactions` afterward.

## Rules

- Money is exact decimals — sum the strings faithfully, report the currency; debits are already negative.
- Resolve accounts by id: `accounts -o json`, match on name/bank, then use the `id`.
- Read-only by default. `sync` only refreshes (it never moves money). Ask before syncing.
- Never read or print `~/.config/open-banking/credentials.json` or the private key — you never need it.
- Never send the user's bank data to any third party.

Dos líneas hacen el trabajo pesado:

  • description es cómo Claude decide recurrir a la skill; está escrito para activarse con preguntas de dinero o banca, así que rara vez la invocas por su nombre.
  • allowed-tools: Bash(openbanking*) aprueba de antemano el CLI, para que Claude pueda ejecutar openbanking … sin preguntar cada vez, pero nada más.

Esa es toda la skill. No hace falta reiniciar; Claude Code detecta las nuevas skills en la sesión.

Pruébalo

Sesiones reales contra un tenant de prueba (números de cuenta y saldos enmascarados):

«¿Cuáles son mis saldos?»

Claude ejecuta openbanking accounts -o json y resume:

You have 6 accounts across 2 banks:

Nordea
  Grundkonto  (DK•• •••• •••• 1555)   +111.50 DKK
  Grundkonto  (DK•• •••• •••• 7544)   −23,576.90 DKK
  Private Banking konto (…8028)       −43,218.85 DKK
Mock ASPSP
  USD current account                  — USD
  Onni Hämäläinen (card)              +98.00 EUR
  Oliver Hämäläinen                   +17.33 EUR

«¿Cuánto gasté en mi cuenta en EUR en junio, y a quién?»

Claude busca el id de la cuenta en accounts, luego ejecuta openbanking transactions cd7cc500… --from 2026-06-01 --to 2026-06-30 -o json y hace los cálculos:

In June you had 8 transactions on the Oliver Hämäläinen (EUR) account:

  Spend (debits):   −28.37 EUR
  Income (credits):  +8.40 EUR
  Net:              −19.97 EUR

Top outgoings:
  Ella Virtanen   −9.73
  Ella Mäkinen    −9.60
  Aino Korhonen   −5.64
  Ella Korhonen   −3.40

Como los importes son cadenas decimales exactas con los débitos ya en negativo, los totales son precisos: sin desviaciones de coma flotante.

«¿Qué conexiones bancarias necesitan atención?»

Claude ejecuta openbanking connections -o json:

2 of your 3 connections are healthy (Mock ASPSP). One needs reconnecting:

  ⚠ Nordea — RequiresReauth (3 accounts)

The consent has lapsed. Reconnect Nordea in the web app to resume syncing those accounts.

A partir de ahí puedes seguir: «clasifica mis gastos», «¿me han pagado este mes?», «sincroniza todo y muéstrame las novedades», y Claude combina el mismo puñado de comandos para responder.

Por qué esto sigue siendo privado

La skill solo ejecuta el CLI en tu máquina. El servicio devuelve texto cifrado; el CLI lo descifra en local con la clave que solo tú tienes. Claude Code ve los resultados porque le has pedido que calcule sobre ellos, pero nunca salen de tu dispositivo para obtener la respuesta, y a la skill se le indica que nunca lea tu archivo de clave ni envíe datos a ningún sitio.

Un apunte honesto: las cifras descifradas sí entran en la sesión de Claude Code que estás usando (así es como razona sobre ellas). Tenlo en cuenta igual que lo harías al abrir tu extracto en cualquier aplicación.

Hazla tuya

  • Por proyecto: coloca el mismo SKILL.md en el .claude/skills/open-banking/ de un repositorio y haz commit; todos los que trabajen en ese repo la tendrán.
  • Amplíala: añade recetas al cuerpo (presupuestos, detección de pagos recurrentes, exportaciones CSV con openbanking transactions … -o csv). El JSON del CLI es estable, así que los nuevos flujos de trabajo son solo más instrucciones.
  • Compártela: empaquétala en un plugin de Claude Code para distribuirla a todo un equipo.

Próximos pasos