Token导航 LogoToken导航

Agent Skill · 研究检索

report-sql(report SQL 搜索)

用于辅助数据库表结构、查询语句、迁移脚本和数据维护任务。它适合让 Agent 分析 schema、编写 SQL、排查查询问题、整理索引或生成迁移建议。使用时需要明确数据库类型、连接环境和目标表,区分只读分析与写入变更;涉及删除、更新、迁移和批量导入时,应优先 dry-run、备份或事务保护,避免误操作。

report-sql 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为权限未标注;许可证为 MIT-0,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 28,208。

总安装 3,256周安装 133GitHub Stars 公开资料未说明下载 1,043核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:report-sql(report SQL 搜索)
来源仓库:https://github.com/23396599/report-sql
安装命令:
openclaw skills install report-sql
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install report-sql

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

辅助数据库表结构分析与 SQL 语句编写,支持迁移脚本生成。适用于查询优化、索引建议和 schema 变更管理任务。提供安全注入验证和条件片段支持,增强查询可靠性。report-sql 属于研究检索类 Skill,可作为该场景下的辅助能力补充。涉及写操作时应开启事务保护,防止误删或数据丢失。

需明确目标数据库类型,目前主要适配主流关系型数据库语法。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install report-sql;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    权限没有明确标注,第一次使用时只给一个无关紧要的任务,观察它到底读了哪些文件和网络。

常见问题

6 条

report-sql 怎么安装?

在终端执行 openclaw skills install report-sql。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

report-sql 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

report-sql 需要什么权限?

权限级别没有明确标注。第一次使用时建议只给无关紧要的任务,观察它实际读写了哪些内容。

report-sql 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

report-sql 用的人多吗?

公开数据是累计安装 3,256 次,近一周安装 133 次,下载 1,043 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

report-sql 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
report-sql

report SQL 搜索 · 本页

3,256—权限未标注MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

report-sql

本技能由老板亲授,定义 report-service 的 SQL 模板协议与变量规范。

Variables

report-service 变量遵循唯一、精确、零容错原则:

✅ 合法语法

#@option.where.<field>#

🔑 当前支持字段

字段名类型示例值典型 SQL 用法
namestring"张三"WHERE s.name = #@option.where.name#
status_listarray["draft","published"]WHERE b.status IN (#@option.where.status_list#)
start_datedate"2026-03-01"AND u.created_at >= #@option.where.start_date#
limitnumber100LIMIT #@option.where.limit#

⚠️ 严禁写法(运行时直接失败)

  • #@name#, #name#, @name@ → 无命名空间;
  • #@option.name#(缺 .where)→ 路径错误;
  • s.name, b.status → 别名+字段,非变量;
  • 变量内含空格、换行、注释 → 破坏字面匹配。

📌 拼接原则

变量只提供值,表别名由 FROM 子句决定:

  • 若 FROM sale s → 写 s.name = #@option.where.name#;
  • 若 FROM blog b → 写 b.title LIKE CONCAT('%', #@option.where.name#, '%');
  • 变量本身永远不带 s. 或 b. 前缀。

✅ 新增:${...} 块级变量语法(2026-03-23 补充)

用于包裹条件片段,典型形式:

${
 AND `corpId` = '#@option.where.corpId#' }
${
 AND `creatorId` = '#@option.where.creatorId#' }
规则说明
  • ${...} 是完整 SQL 片段容器,内部可含任意合法 SQL(含换行、缩进、注释);
  • ${...} 内部仍使用 #@option.where.xxx# 注入具体值;
  • ${...} 块整体按需渲染:若块内所有 #@...# 均有值,则整个块保留;若任一 #@...# 为空/未传,则整块被剔除(空安全);
  • 不支持嵌套 ${...};
  • ${...} 外不可加额外空格或符号(如 ${...} 或 AND ${...} —— AND 必须写在块内)。

✅ 新增:模糊匹配常用块(2026-03-23 补充)

用于 LIKE 模糊查询,典型形式:

${
 AND `name` LIKE '%#@option.where.name#%' }
使用说明
  • %...% 包裹确保前后通配;
  • 该块同样遵循 ${...} 空安全规则:若 #@option.where.name# 未传值,整块自动剔除;
  • 如需左匹配(xxx%)或右匹配(%xxx),请显式写出对应 % 符号。

✅ 新增:时间范围查询常用块(2026-03-23 补充)

用于 createdAt 等时间字段的开闭区间查询,典型形式:

${
 AND `createdAt` >= '#@option.where.createdAt[0]#'
 AND `createdAt` < '#@option.where.createdAt[1]#' }
使用说明
  • [0] / [1] 表示数组索引,要求传入长度为 2 的时间字符串数组(如 ["2026-03-01 00:00:00", "2026-03-02 00:00:00"]);
  • 语义为 >= start AND < end,实现标准左闭右开区间;
  • 该块同样遵循 ${...} 空安全:任一索引值缺失 → 整块剔除。

✅ 新增:多值循环块语法(2026-03-23 补充)

用于生成 IN 或多条件 OR 逻辑,典型形式:

$@option.where.state ->
 OR {
 AND [state = '#@item#'] }
使用说明
  • $@option.where.state -> 声明待遍历的数组变量(如 ['draft','published']);
  • #@item# 在循环中自动替换为当前数组元素;
  • OR { ... } 是协议级语法糖:引擎会将每个 { ... } 块内容作为原子条件,用 OR 连接,并自动包裹外层括号 (... OR ...),最终与块外固定条件组合(如 AND (...)),确保 SQL 语义清晰、结构合法;
  • 此机制保证生成的 SQL 永远合法(避免 AND/OR 优先级错误);
  • 该语法天然防 SQL 注入(值经模板引擎安全转义);
  • 若 @option.where.state 为空数组或未传,整段被剔除。
🔁 进阶说明:括号语义与等价性

$@... -> OR { ... } 生成的 SQL 自动为每个 { ... } 块添加括号,例如:

$@option.where.types ->
 OR {
 AND state = 'finished' AND [type = '#@item#'] }

解析为:

( state = 'finished' AND type = 'sale' )
OR ( state = 'finished' AND type = 'refund' )

此形式在逻辑上 完全等价于:

state = 'finished' AND type IN ('sale', 'refund')

或:

AND state = 'finished' AND ( (type = 'sale') OR (type = 'refund') )

✅ 优势:括号强制分组,杜绝 AND/OR 优先级陷阱; ✅ 优势:可轻松扩展为多字段组合(如 AND [type = '#@item#'] AND [status = '#@item2#']); ⚠️ 注意:若需外层统一 AND(如所有 OR 结果再 AND 一个固定条件),请将该固定条件写在 OR { ... } 块之外(如 WHERE active = 1 AND (...)),而非塞进块内。

🌐 高阶用法:对象数组遍历(2026-03-23 补充)

$@... -> OR { ... } 支持遍历对象数组,并用点语法 #@item.xxx# 访问嵌套字段。

典型形式:

$@searchOrder -> OR { AND [id = '#@item.corpId#'] }

解析逻辑:

  • 若 searchOrder = [{"id":1,"corpId":"wx123"},{"id":2,"corpId":"wx456"}],
  • 则 #@item.corpId# 分别取值 "wx123" 和 "wx456",
  • 最终生成:
( id = 'wx123' ) OR ( id = 'wx456' )

✅ 优势:直接复用上一步查询结果,实现“查完即用”的流水线; ⚠️ 注意:#@item.xxx# 中的 xxx 必须是对象存在的字段名,否则该元素被跳过(空安全)。

✅ 新增:复杂 EXISTS 子查询块(2026-03-23 补充)

用于封装高复用业务逻辑(如分发状态判定),典型形式:

${
 AND NOT (
 EXISTS(
 SELECT #@option.where.distributeYes# FROM wq.`joblist` j WHERE j.`JobId` = b.id AND j.active = 1 AND (j.`outUserID` = '' OR j.outUserID IS NULL)) OR (NOT EXISTS(SELECT 1 FROM wq.`joblist` j WHERE j.`JobId` = b.id AND j.active = 1 AND (j.`outUserID` = '' OR j.outUserID IS NULL)) and (b.outUserID is null or b.outUserID = '')))}
${ AND (EXISTS(SELECT #@option.where.distributeNo# FROM wq.`joblist` j WHERE j.`JobId` = b.id AND j.active = 1 AND (j.`outUserID` = '' OR j.outUserID IS NULL)) OR (NOT EXISTS(SELECT 1 FROM wq.`joblist` j WHERE j.`JobId` = b.id AND j.active = 1 AND (j.`outUserID` = '' OR j.outUserID IS NULL)) and (b.outUserID is null or b.outUserID = '')))}
使用说明
  • 此类块将复杂 EXISTS 逻辑固化为可插拔条件单元,模板中只需声明变量,无需重复书写长 SQL;
  • #@option.where.distributeYes# / #@option.where.distributeNo# 仍为原子值注入(如 1 或 'true'),子查询结构由块体保证;
  • 同样遵循 ${...} 空安全:任一 #@...# 缺失 → 整块剔除;
  • 表别名(j./b.)由块内 SQL 自行定义,与外部 FROM 无关。

✅ 新增:变量使用场景 — 块级边界原则(2026-03-23 补充)

${...} 块不是“值占位符”,而是自洽 SQL 片段容器。其边界必须包裹完整语法单元。

❌ 危险写法(绝对禁止)
-- 错!and 在块外 → 空时生成语法错误:`WHERE active = 1 and `
select id, parent, name from department where active = 1 and ${ corpId = '#@option.where.corpId#' }
✅ 正确写法(必须)
-- 对!and 在块内 → 空时整块剔除,SQL 依然合法
select id, parent, name from department where active = 1 ${ and corpId = '#@option.where.corpId#' }
📌 核心原则
  • 所有逻辑词(AND/OR/IN/BETWEEN 等)必须写在 ${...} 块内;
  • 块内 SQL 必须是独立、可执行的语法片段(能单独 EXPLAIN);
  • 块外只允许固定 SQL(如 SELECT ... FROM ... WHERE),绝不拼接动态逻辑。
这是 report-service 空安全的最后防线 —— 宁可多写一个 and,不可少包一行 SQL。

Transform

report-service 支持链式数据变换操作,用于处理 SQL 查询结果,支持初始化、条件赋值、字段映射、关联补全与结果组装。

变换语法说明

所有变换以 JSON 数组形式声明,每个对象为一个操作步骤,按顺序执行。

字段类型说明
methodstring操作类型(setData / copyObject / leftJoin)
targetstring目标变量名(如 @result, @rows),以 @ 开头
sourceany源数据(可为字面值、数组、对象、或另一变量如 @deptList)
preconditionstring执行前置条件(如 #@deptList#,当该变量有值时才执行此步)
attributes / fieldsarray字段映射规则(from → to,可设 default)
targetKey / sourceKeystring关联键名(用于 leftJoin)

示例 1:结果初始化与条件赋值

[
 {
  "method": "setData",
  "target": "@result",
  "source": []
 },
 {
  "method": "setData",
  "target": "@result",
  "source": "@deptList",
  "precondition": "#@deptList#"
 }
]
  • 作用:先初始化 @result 为空数组;若 @deptList 存在,则用其覆盖 @result。
  • 关键:precondition 实现空安全分支。
💡 权威说明(老板亲授): precondition: "#@deptList#" 的语义是——判断上一步产生的中间变量 @deptList 是否存在且非空(非 null / undefined / [] / {}); 仅当该条件为真时,第二步 setData 才执行; 第一步 source: [] 确保 @result 始终有默认值,避免未定义状态。

示例 2:对象字段提取与结构重组

[
 {
  "method": "setData",
  "target": "@result",
  "source": {}
 },
 {
  "method": "copyObject",
  "target": "@result",
  "source": "@countOrder[0]",
  "attributes": [
    {
     "from": "totalCount",
     "to": "count",
     "default": 0
    },
    {
     "from": "totalMoney",
     "to": "money",
     "default": 0
    }
  ]
 }
]
  • 作用:先初始化 @result 为空对象 {};再从 @countOrder[0](数组首项,必须是对象)中提取 totalCount → count、totalMoney → money,缺失时用 default 填充。
  • 关键:copyObject 支持字段级映射、类型安全兜底,且目标必须是对象(非数组)。

示例 3:多源关联与标准响应组装

[
 {
  "method": "setData",
  "target": "@rows",
  "source": []
 },
 {
  "method": "setData",
  "target": "@rows",
  "source": "@searchOrder",
  "precondition": "#@searchOrder#"
 },
 {
  "method": "leftJoin",
  "target": "@rows",
  "source": "@searchCorp",
  "targetKey": "corpId",
  "sourceKey": "id",
  "fields": [
    {
     "from": "name",
     "to": "corpName",
     "default": ""
    },
    {
     "from": "nickname",
     "to": "corpNickname",
     "default": ""
    }
  ]
 },
 {
  "method": "copyObject",
  "target": "@result",
  "source": "@rows",
  "to": "rows",
  "default": []
 }
]
  • 作用:

1. 初始化 @rows 为空数组; 2. 若 @searchOrder 存在,则赋值; 3. 用 @searchCorp 左关联 @rows(corpId ↔ id),补全 corpName/corpNickname; 4. 将最终 @rows 数组整体写入 @result.rows(非覆盖 @result)。

  • 关键:leftJoin 保障跨源数据一致性,copyObject 的 to: "rows" 实现标准响应结构({ "rows": [...] })。

平台分布

OpenClaw

86.11%
按下载量换算898

安全审计

VirusTotal

未展示

ClawScan

可疑

Static analysis

通过

权限和风险

权限未标注

当前来源未能明确判断权限范围,默认进入异常复核队列。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills