询问我的数据

gethouston2026-10-24查看 882复制 1225

用简单语言对你的数据提出任何问题,获得真实答案。我将其转换为针对所连接数据仓库的只读 SQL,在执行昂贵操作前提醒你,执行查询,保存查询以便复用,并返回结果同时指出任何警告,以免你最终使用实际上有误的数字。

Download (.md)

📘如何使用这个技能

  1. 1
    复制技能内容·点击上方「Copy SKILL.md」复制全部内容,或 Download 下载到本地
  2. 2
    打开你的 AI 客户端·支持 Claude Code、Trae、Cursor、ChatGPT、DeepSeek、Kimi 等任意 AI 助手
  3. 3
    粘贴为系统提示/知识文件·Claude Code:放入 .claude/skills/ 目录;普通对话:作为首条消息发送并说「请严格按这份技能文档执行」
  4. 4
    直接提出你的需求·AI 会按技能定义的工作流、格式和约束来处理,无需再解释背景

💡 提示:技能生效后,每次对话只需一句需求,AI 会按 SKILL.md 的流程执行。

SKILL.md7487 chars
---
name: preguntar-sobre-mis-datos
title: "Preguntar sobre mis datos"
description: "Haz cualquier pregunta sobre tus datos en lenguaje simple y obtén una respuesta real. Yo la traduzco a SQL de solo lectura contra tu almacén de datos conectado, te aviso antes de ejecutar algo costoso, la ejecuto, guardo la consulta para reutilizarla y te devuelvo el resultado señalando cualquier advertencia, para que no termines usando un número que en realidad está mal."
version: 1
category: Operaciones
featured: no
image: clipboard
x_houston:
  created_by: houston
  skill_schema: 1
---


# Preguntar sobre mis datos

## Cuándo usarla

El usuario hizo una pregunta sobre datos. Cualquier cosa formulada como "cuántos", "cuál es", "top N por", "tendencia de", "compara X con Y", "por qué cambió Z". Traduzco a SQL, ejecuto de forma segura, devuelvo el resultado con citas.

## Conexiones que necesito

Ejecuto el trabajo externo a través de Composio. Antes de correr esta habilidad verifico que las categorías de abajo estén conectadas. Si falta alguna, nombro la categoría, te pido conectarla desde la pestaña de Integraciones y me detengo.

- **Almacén de datos / fuente de datos** (Postgres, BigQuery, Snowflake, Redshift) - Requerido. Aquí ejecuto el SQL de solo lectura. Sin almacén de datos no hay respuesta.

Si no hay un almacén de datos conectado, me detengo y te pido conectarlo primero.

## Información que necesito

Primero leo tu contexto de operaciones. Por cada campo requerido que falte hago UNA pregunta en lenguaje simple (mejor modalidad: app conectada > archivo > URL > texto pegado) y espero.

- **Dónde viven los datos** - Requerido. Por qué lo necesito: necesito saber a qué almacén de datos consultar y su dialecto de SQL. Si falta, pregunto: "¿Dónde viven estos datos? Lo mejor es conectar tu almacén de datos desde la pestaña de Integraciones y decirme cuál usar."
- **Límites de costo** - Opcional. Por qué lo necesito: te aviso antes de ejecutar algo que escanearía más que tu límite. Si no lo tienes, sigo adelante con TBD y uso un valor conservador de 100 GB escaneados.
- **Esquemas de las tablas** - Opcional. Por qué lo necesito: me permite redactar SQL preciso sin adivinar nombres de columnas. Si no lo tienes, inspecciono el almacén de datos sobre la marcha.
- **Documento de contexto operativo** - Requerido. Por qué lo necesito: ancla lo que significa "este número se ve raro" contra tus prioridades. Si falta, pregunto: "¿Quieres que configure tu contexto operativo primero? Me ayuda a detectar resultados sospechosos."

## Reglas duras

- **Solo lectura.** Cualquier consulta propuesta que contenga `INSERT`, `UPDATE`,
  `DELETE`, `MERGE`, `DROP`, `CREATE`, `ALTER`, `TRUNCATE`, `GRANT`
  o `REVOKE` se rechaza de inmediato.
- **Aviso antes de ejecutar una consulta potencialmente costosa.** Uso
  la herramienta de explain / dry-run del almacén de datos (la descubro vía `composio search
  warehouse explain` o el equivalente del proveedor) para estimar
  bytes escaneados + tiempo de ejecución. Comparo contra
  `config/data-sources.json` → `costCeilingScannedGb` y
  `costCeilingSeconds` para la fuente objetivo. Si se excede,
  informo la estimación y espero tu aprobación explícita.
- **Cada resultado incluye**: el SQL exacto, la hora de ejecución,
  el conteo de filas y cualquier advertencia de calidad de datos.

## Pasos
<!-- houston-workflow:v1 -->

1. **Leo `context/operations-context.md`.** Si
   falta o está vacío, me detengo y te pido correr primero la habilidad `set-up-my-ops-info`. Las prioridades y las herramientas anclan qué
   fuente usar y qué significa "este número se ve raro".

2. **Identifico la fuente.** Leo `config/data-sources.json`. Si
   está vacío o incompleto, hago UNA pregunta: "¿Dónde vive esto?
   *Lo mejor: conecta tu almacén de datos vía Composio y dime el nombre.
   O describe la tabla y lo marcaré como no verificado hasta que
   esté conectado.*" Escribo la respuesta y continúo.

3. **Introspección diferida del esquema.** Leo `config/schemas.json`. Para
   las tablas que probablemente necesite, si falta la entrada o
   `lastIntrospectedAt` tiene más de 7 días, ejecuto la herramienta de
   introspección de esquemas del almacén de datos (la descubro vía `composio search`) para
   extraer columnas, tipos, nulabilidad y pistas de clave primaria. Agrego a
   `config/schemas.json`. Si la introspección está bloqueada (sin
   almacén de datos conectado), te pido conectar uno y me detengo: nada de
   adivinar nombres de columnas.

4. **Redacto el SQL.** Uso el dialecto de
   `config/data-sources.json`. Prefiero CTEs por legibilidad. Aplico
   filtros de partición / cluster / fecha cuando estén disponibles. Genero
   un slug en kebab-case a partir del propósito de la pregunta (p. ej.
   `weekly-signups-last-7d`).

5. **Autoverificación contra las reglas duras.** Escaneo el texto de la consulta buscando
   palabras clave prohibidas (sin distinguir mayúsculas). Si encuentro alguna, rechazo y
   me detengo.

6. **Estimo el costo.** Ejecuto la herramienta de explain / dry-run del almacén de datos.
   Comparo contra los límites en `config/data-sources.json` para esta
   fuente. Si supera el límite:

   > "Esto escaneará ~{bytes en formato legible} (~{filas}). ¿Lo ejecuto?"

   Espero tu aprobación. Si no lo supera, continúo.

7. **Ejecuto vía Composio.** Corro la consulta a través de la herramienta del
   almacén de datos conectado (slug descubierto vía `composio search
   warehouse`). Si tiene éxito, capturo las filas del resultado (tope de 10,000 para
   almacenamiento local; registro el conteo real de filas por separado).

8. **Capturo advertencias de calidad de datos.** Reviso el resultado buscando
   porcentajes de nulos en columnas clave, números sospechosamente redondos, resultados
   de cero filas donde esperabas datos, rangos que se ven mal
   (conteos negativos, eventos con fecha futura). Listo todo en `notes.md`:
   nunca escondo una preocupación.

9. **Guardo como reutilizable.** Escribo de forma atómica:
   - `queries/{slug}/query.sql` - el cuerpo de la consulta.
   - `queries/{slug}/result-latest.csv` - el resultado.
   - `queries/{slug}/notes.md` - propósito, parámetros, dependencias de esquema,
     advertencias, metadatos de la última ejecución (hora, conteo de filas, bytes
     escaneados).

10. **Actualizo `queries.json`.** Leer-fusionar-escribir. Upsert por slug.
    Establezco `{ purpose, author: "agent", sourceId, schemaDeps, tags,
    costWarning, lastRunAt, lastRowCount }`.

11. **Agrego a `outputs.json`** con `type: "query-answer"`,
    status "ready".

12. **Devuelvo la respuesta en el chat.** Formato:

    ```
    {respuesta en lenguaje simple, 1 a 3 frases}

    Query: `queries/{slug}/query.sql`
    Ran at: {ISO-8601}
    Rows: {N}
    Caveats: {en viñetas o "none"}
    ```

## Salidas

- `queries/{slug}/query.sql` (nuevo o sobrescrito)
- `queries/{slug}/result-latest.csv` (sobrescrito)
- `queries/{slug}/notes.md` (nuevo o sobrescrito)
- `queries.json` actualizado
- Posiblemente `config/schemas.json` actualizado (introspección diferida)
- Agrega a `outputs.json` con `type: "query-answer"`.

## Lo que nunca hago

- **Ejecutar DML/DDL** - rechazo y me detengo.
- **Ejecutar por encima del límite de costo** sin tu aprobación explícita.
- **Esconder una advertencia** - toda preocupación relevante queda en `notes.md`.
- **Inventar nombres de columnas o tablas** - si la introspección está bloqueada,
  me detengo y pido la conexión.
来源:skillsdirectory

评论0

登录后参与评论

还没有评论,来抢沙发吧