agentCLAWHUBUnverified

Sql Splitter

拆分 SQL 文件为独立文件(存储过程、函数、视图、触发器、表结构、索引、约束),自动分析依赖并生成合并脚本

OpenClaw

Rank

62

Safety

84

Downloads

2.4k

Updated

Oct 9, 2026

Version

3.6.3

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 2.4K downloads reported by the source. Last updated 10/9/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 9, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 9, 2026
Adoption signal
2.4K downloadsadoption · observed Oct 9, 2026
Latest release
3.6.3release · observed Jul 4, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17dzz5rp1x5wrb7s33vv04cb984wjf8:sql-splitter
  1. Install using `clawhub skill install s17dzz5rp1x5wrb7s33vv04cb984wjf8:sql-splitter` in an isolated environment before connecting it to live workloads.
  2. No published capability contract is available yet, so validate auth and request/response behavior manually.
  3. Review the upstream CLAWHUB listing at https://clawhub.ai/fish1981bimmer/sql-splitter before using production credentials.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-fish1981bimmer-sql-splitter/snapshot"

Documentation

CLAWHUB

160,000 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---

name: sql-splitter

description: 拆分 SQL 文件为独立文件(存储过程、函数、视图、触发器、表结构、索引、约束),自动分析依赖并生成合并脚本

---



# SQL 文件拆分工具 v3.6.2



将包含多个 SQL 对象的单一文件或目录拆分为独立的 .sql 文件,

并自动分析对象间依赖关系,生成按依赖排序的合并脚本。



## v3.4.5 修复 — dbo两段式替换 + DATETIME2排序 + 方括号替换架构优化 + SELECT INTO转换 + DDL分号



- **v3.5.4 新增: 过程体内所有语句(DML+变量赋值)补分号** — 新增`_ensure_statement_semicolons()`方法(Step 8.6),处理DML和变量赋值的分号补全,同时正确处理跨行INSERT INTO

- **v3.5.3 行为变更: 非类型名方括号→加双引号** — `[aa]`→`"aa"`(v3.5.3起加双引号; v3.5.2及以前去[]不加双引号→`aa`),类型名`[int]`→`int`仍只去[]不加双引号。修改位置:`_convert_bracket_identifiers()`新增`_replace_bracket`回调函数,用TYPE_MAPPINGS键集合区分类型名和普通标识符



- **dbo替换规则(v3.5.6最终版)** — 三段式和两段式区别处理:

  - **三段式**(已有其他schema名,如`HRBI_Stage.[dbo].[xxx]`): dbo是SQL Server默认schema,直接删除

  - **两段式**(只有dbo,如`[dbo].[xxx]`或`dbo.xxx`): dbo替换为schema_prefix

  - 关键区分:输入中若有其他schema名存在,dbo是冗余层→删除;若只有dbo,dbo是唯一schema标识→替换为prefix

  - **正则替换顺序(不可颠倒)**: 1)双点号`(\\w+)\\.\\.(\\w+)`→`\\1.\\2` 2)三段式引号`"\\w+"\\.dbo\\.\"(\\w+)\"`→`"$1"` 3)三段式裸名`(\\w+)\\.dbo\\.(\\w+)`→`"$1\".\"$2\"` 4)三段式混合`"\\w+\"\\.\\w+\\.(\\w+)`→保留 5)两段式引号`"dbo\"\\.\"(\\w+)\"`→`prefix.\"$1\"` 6)两段式裸名`dbo\\.(\\w+)`→`prefix.$1`

  - 实现位置:`_replace_dbo_prefix()`

  - ⚠️ 改完dbo规则后必须跑全量312过程验证

  - 详见 [dbo演进史](references/dm-converter-v345-fixes.md)

- **DATETIME2→TIMESTAMP2而非TIMESTAMP(BUG)** — TYPE_MAPPINGS的key构建正则alternation时无排序,`DATETIME`排在`DATETIME2`前面抢先匹配,`DATETIME2`被拆成`DATETIME`+`2`变成`TIMESTAMP2`。修复:`sorted(keys, key=len, reverse=True)`按长度降序排列,`DATETIME2`(9字符)排在`DATETIME`(8字符)前面。影响范围:全局`_TYPE_NAMES_PATTERN`、`_FULL_TYPE_NAMES_PATTERN`、以及`_post_convert_table_types`和`_post_convert_generic_types`中的两个`_bare_type_pattern`

- **方括号替换在token还原后执行导致注释内容被误改(架构BUG)** — `_post_convert_table_types`/`_post_convert_generic_types`中的`\\[([^\\]]+)\\]`在Step 6.7(token还原后)执行,注释已还原为原始文本,注释中含方括号(如`---一次性解决率 是[处理人响应次数`)会被误匹配截断。修复:把方括号替换从Step 6.7移到Step 4`_convert_bracket_identifiers()`中执行——此时注释和字符串已被tokenize保护,方括号只出现在真实SQL代码中,不会被注释内容干扰

- **SELECT INTO #临时表→CTAS创建GTT(新规则)** — 达梦不支持`SELECT ... INTO #新表 FROM ...`建表语法。转换规则:临时表(`INTO #xxx`/`INTO tmp_xxx`)→`CREATE GLOBAL TEMPORARY TABLE "tmp_xxx" AS SELECT ... FROM ...`(CTAS方式);普通表暂不自动转换(与达梦变量赋值语法`SELECT expr INTO var FROM`形式相同,无法区分)。修改位置:`_convert_temp_tables()`新增SELECT INTO处理逻辑

- **过程体内DDL语句结尾加分号(新规则)** — 达梦存储过程体内每条DDL(CREATE/ALTER/DROP TABLE/INDEX等)必须以`;`结尾。新增`_ensure_ddl_semicolons()`方法(Step 8.5),用状态机扫描过程体:单行DDL如`DROP TABLE xxx`直接补`;`,跨行DDL如`CREATE GLOBAL TEMPORARY TABLE "tmp_xxx"\n(id INT)\n`在`)`行补`;`,CTAS跨行子查询在遇到下一个语句开头时给上一行补`;`,同时处理`ON PRIMARY`文件组语法去掉。312个存储过程中DDL块缺分号数从447降为0

- **过程体内所有语句(DML+变量赋值)结尾加分号(v3.5.4起)** — 新增`_ensure_statement_semicolons()`方法(Step 8.6)。达梦存储过程体内DML(INSERT/DELETE/UPDATE/SELECT)和变量赋值(`:=`)也必须以分号结尾。关键:跨行INSERT INTO(table_name后无括号,列定义在下一行)不加分号;单行DELETE FROM...WHERE...补分号;v_xxx := expr补分号;跨行赋值((/+,/结尾)不补分号。312个存储过程全部验证通过。

- **过程体内DML语句和变量赋值结尾加分号(v3.5.6新增)** — 达梦存储过程体内每条DML(INSERT/DELETE/UPDATE/SELECT)和变量赋值(`v_xxx := expr`)必须以`;`结尾。新增`_ensure_statement_semicolons()`方法(Step 8.6),逐行扫描过程体:单行DML如`delete FROM xxx WHERE y=1`直接补`;

_meta.json

{
  "ownerId": "kn76tyr0ztr0j5fyej0qbchjx584wwjp",
  "slug": "sql-splitter",
  "version": "3.6.3",
  "publishedAt": 1783130283027
}

references/dm-converter-design.md

# SQL Server -> 达梦数据库转换器设计要点

## 架构

```
convert() 流程:
 Step1: _tokenize() - 字符串/注释 -> 占位符
 Step2: 按对象类型转换 (procedure/function/view/trigger/table/index/constraint)
 Step3: _tokenize() 重新tokenize + 合并token_map
 Step4: 通用转换 (data_types/functions/global_vars/statements/try_catch/transaction)
 Step5: _detokenize() 用合并后的map还原所有占位符
 Step6: _tokenize_strings_only() + _convert_variable_syntax() + detokenize
 Step7: _convert_goto_label()
 Step8: _add_terminator() (仅procedure/function/trigger)
```

## 已修复的坑(v2.4.0及之前)

### 1. token_map 合并
Step2的_convert_procedure等返回token化文本(含__TOKEN_0__),Step3重新_tokenize产生新map。
如果不合并,Step4 _detokenize用新map找不到__TOKEN_0__的映射。

修复:
```python
original_token_map = dict(token_map) # Step2前保存
tokens, token_map = self._tokenize(result) # Step3
merged_map = dict(original_token_map)
merged_map.update(token_map) # 合并
# Step4用merged_map
result = self._detokenize(result, merged_map)
```

### 2. content = new_content 不可省略
_convert_variable_syntax中全局@替换后忘记`content = new_content`,
导致return content返回的是替换前的文本。

### 3. 嵌套括号匹配
`VARCHAR(100)`中的`)`会截断`[^)]*`,导致参数列表匹配失败。

错误: `r'\(([^)]*)\)'` -> 在`VARCHAR(100)`的`)`处截断
正确: `r'(\([^)]*(?:\([^)]*\)[^)]*)*\))'` -> 匹配嵌套括号

### 4. DECLARE上下文的数据类型
数据类型转换正则的前缀只匹配`,\(\s*|\n\s*`时,
`DECLARE @v_date DATETIME`中的DATETIME不会被匹配。

修复: 前缀加上`DECLARE\s+`

### 5. INSERT INTO误匹配
`\n INSERT INT` 被匹配为: 前缀`\n` + 列名`INSERT` + 类型`INT`
导致INSERT变成INTEGERO

修复方向: 数据类型替换前检查列名是否为SQL关键字(SELECT/INSERT/UPDATE/DELETE等)

### 6. 变量@转换时机
在token保护下做@替换时,__TOKEN_0__等占位符名不含@,安全。
但更安全的做法: 先还原所有token,再用_tokenize_strings_only只保护字符串,
然后做@替换。

### 7. 终止符 /
GO在Step2已被转成/,_add_terminator需要先去掉已有的/再添加新的。
```python
if content.endswith('/'):
    content = content[:-1].rstrip()
```

## 代码审查发现的未修BUG(2026-05-27审查)

用户反馈"达梦转换不好用",代码审查发现以下严重问题:

### BUG-1: 函数映射转换结果语法错误(严重)

**CONVERT函数** (line 118):
```python
(r'\bCONVERT\s*\(\s*(\w+)\s*,', r'CAST(', True)
```
- 只替换了`CONVERT(type,`为`CAST(`,丢掉了type参数
- SQL Server: `CONVERT(VARCHAR(50), @val)` → 达梦: `CAST(@val AS VARCHAR(50))`
- 参数顺序和格式都不对,需要回调函数重排参数

**DATEADD函数** (line 127-128):
```python
(r'\bDATEADD\s*\(\s*day\s*,', 'CURRENT_TIMESTAMP + ', True)
(r'\bDATEADD\s*\(\s*month\s*,', 'ADD_MONTHS(CURRENT_TIMESTAMP,', True)
```
- 丢了date参数,直接硬编码CURRENT_TIMESTAMP
- SQL Server: `DATEADD(day, 7, @order_date)` → 达梦: `@order_date + 7`
- SQL Server: `DATEADD(month, 3, @start_date)` → 达梦: `ADD_MONTHS(@start_date, 3)`
- 需要回调函数提取3个参数并重排

**DATEDIFF函数** (line 129):
```python
(r'\bDATEDIFF\s*\(\s*day\s*,', '(', True)
```
- 直接替换成`(`,语法彻底崩了
- SQL Server: `DATEDIFF(day, @start, @end)` → 达梦: `@end - @start`(日期差)
- 需要回调函数提取参数

**STRING_AGG函数** (line 115):
```python
(r'\bSTRING_AGG\s*\(', 'LISTAGG(', True)
```
- 达梦LISTAGG需要`WITHIN GROUP (ORDER BY ...)`语法,光改名不够
- SQL Server: `STRING_AGG(name, ',')` → 达梦: `LISTAGG(name, ',') WITHIN GROUP (ORDER BY name)`

**STUFF函数** (line 112):
```python
(r'\bSTUFF\s*\(', 'OVERLAY(', True)
```
- 达梦不支持OVERLAY函数,参数语义也不同
- STUFF(str, start, len, replace) vs OVERLAY不同签名

**REPLICATE函数** (line 113):

references/dm-converter-v243-fixes.md

# dm_converter v2.4.3 修复记录

## 修复的9个失败测试

从9个失败 → 40/40全部通过。

### 修复1: BIT→BOOLEAN, TINYINT→SMALLINT
- **问题**: type_mappings中 `'bit': 'TINYINT'`, `'tinyint': 'TINYINT'`,但达梦没有TINYINT
- **修复**: `'bit': 'BOOLEAN'`, `'tinyint': 'SMALLINT'`
- **测试**: test_data_types

### 修复2: NVARCHAR(n) → VARCHAR(n CHAR)
- **问题**: NVARCHAR(100)只转成VARCHAR(100),缺少达梦字符语义CHAR标记
- **根因**: NVARCHAR处理的代码被patch工具放到了`else:`分支内部(即只在suffix为空时执行),导致有suffix时永远无法命中
- **修复**: 将NVARCHAR检查代码从`else:`块内移到`if suffix:` / `else:` 块**之后**(与if/else同级)
- **关键坑**: patch工具插入代码时,缩进层级容易搞错。**必须用`python3 -c`检查实际缩进**:
  ```python
  with open('dm_converter.py') as f:
      for i, line in enumerate(f, 1):
          if i >= 511 and i <= 525:
              spaces = len(line) - len(line.lstrip())
              print(f"{i}: indent={spaces} |{line.rstrip()[:70]}|")
  ```
- **测试**: test_data_types

### 修复3: SET NOCOUNT ON注释格式
- **问题**: 注释`'-- SET NOCOUNT ON (达梦不需要)'`中包含原文`SET NOCOUNT ON`,测试用assertNotIn检测到
- **修复**: 改为`'-- NOCOUNT (达梦不需要)'`,去掉注释中的原文关键字
- **测试**: test_complex_procedure, test_set_nocount_on

### 修复4: DATEADD专用转换
- **问题**: function_mappings中旧的DATEADD条目只做简单前缀替换(如`DATEADD(day,` → `CURRENT_TIMESTAMP +`),不能正确处理3个参数的重排
- **修复**: 
  - 从function_mappings删除旧的DATEADD条目
  - 添加`_parse_function_args()`方法解析嵌套括号的参数列表
  - 添加`_convert_dateadd()`方法,按unit类型重排参数:
    - `DATEADD(day, n, date)` → `date + INTERVAL 'n' DAY`
    - `DATEADD(month, n, date)` → `ADD_MONTHS(date, n)`
    - 其他单位类似
  - 在`_convert_functions()`末尾调用
- **测试**: test_dateadd_conversion

### 修复5: SELECT赋值区分有无FROM
- **问题**: 所有`SELECT @var = expr`都转成`var := expr`,但有FROM子句时达梦需要`SELECT expr INTO var FROM table`
- **修复**: 
  - 添加`_convert_select_assign()`方法
  - 解析赋值列表和FROM子句位置
  - 有FROM: `SELECT @var=expr FROM t` → `SELECT expr INTO var FROM t`
  - 无FROM: `SELECT @var=expr` → `var := expr`
  - 支持多变量赋值: `SELECT @a=col1, @b=col2 FROM t` → `SELECT col1, col2 INTO a, b FROM t`
- **测试**: test_select_into_with_from, test_select_multi_assign, test_select_assign_no_from

### 修复6: IF→THEN/END IF 控制流
- **问题**: `IF @x > 0 BEGIN ... END`没有转换为达梦语法
- **修复**: 添加`_convert_if_else()`方法
  - `IF condition` → `IF condition THEN`
  - BEGIN/END配对:IF后的BEGIN跳过,对应的END改为`END IF;`
  - ELSE保留
- **测试**: test_if_else, test_if_with_try_catch, test_nested_if

### 修复7: WHILE→LOOP/END LOOP
- **问题**: `WHILE @x > 0 BEGIN ... END`没有转换
- **修复**: 添加`_convert_while_loop()`方法
  - `WHILE condition` → `WHILE condition LOOP`
  - WHILE后的BEGIN跳过,对应的END改为`END LOOP;`
- **测试**: test_while_loop

### 修复8: PRINT→DBMS_OUTPUT.PUT_LINE
- **问题**: `PRINT 'text'`没有转换为达梦语法
- **修复**: 添加`_convert_print()`和`_print_replacer()`方法
  - `PRINT expr` → `DBMS_OUTPUT.PUT_LINE(expr);`
  - SQL Server的`+`字符串连接改为达梦的`||`
  - `CAST(...AS VARCHAR)` → `CAST(...AS VARCHAR(4000))`(达梦VARCHAR需要长度)
- **测试**: test_complex_procedure

### 修复9: 流程步骤位置
- 在convert()方法中,Step 5.5后添加控制流和PRINT调用:
  ```python
  # Step 5.5: 控制流转换 (IF/WHILE)
  result = self._convert_if_else(result)
  result = self._convert_while_loop(result)
  
  # Step 5.6: PRI

references/dm-converter-v245-bracket-dbo-split.md

# dm_converter v2.4.5 设计记录 — 方括号→双引号 + dbo前缀 + 精确拆分

## 规则1: 方括号[] → 双引号""

### 设计决策

`_detokenize` 方法中,方括号占位符还原时做转换:

- 普通标识符 `[Users]` → `"Users"`
- SQL类型名 `[nvarchar]` → `nvarchar`(去掉方括号 + 自动做类型映射)
- SQL类型名不能转双引号,否则 `"nvarchar"(100)` 变成标识符而非类型,后续类型映射不生效

### 关键坑:类型名在detokenize时必须同时做映射

**问题链**:
1. `_tokenize` 把 `[nvarchar]` 替换为 `__TOKEN_N__`
2. Step4 `_convert_data_types` 匹配的是裸名 `NVARCHAR`,但此时是占位符,匹配不上
3. `_detokenize` 还原时如果只去掉方括号变成 `nvarchar(100)`,已经过了Step4,不会再被类型映射

**解决**:在 `_detokenize` 中,对类型名直接做映射:
```python
if inner.upper() in _TYPE_NAMES:
    mapped = self.type_mappings.get(inner.lower(), inner)
    replacement = mapped
```

### 关键坑:VARCHAR CHAR语义后处理

detokenize中类型名映射绕过了Step4中 `VARCHAR(n) → VARCHAR(n CHAR)` 的逻辑(因为Step4在token保护下,`[nvarchar]`是占位符匹配不上)。

**解决**:在Step5.4加后处理:
```python
result = re.sub(r'\bVARCHAR\((\d+)\)(?!\s+CHAR\b)', r'VARCHAR(\1 CHAR)', result, flags=re.IGNORECASE)
```

放在Step5 detokenize之后、Step5.5控制流转换之前。

## 规则2: dbo前缀智能处理

### 三段式 vs 两段式判断

| 模式 | 判断依据 | 处理方式 | 示例 |
|------|---------|---------|------|
| `[HRBI].[dbo].[Users]` | dbo前有schema前缀 | 删除dbo. | → `"HRBI"."Users"` |
| `[dbo].[Users]` | dbo前无schema前缀 | 用schema_prefix替换dbo | → `hrbi_stage."Users"` |

### 实现位置

`_convert_dbo_prefix` 方法在 **Step4.5** 执行(detokenize之后),因为:
- detokenize之前:方括号是占位符,正则无法匹配 `__TOKEN_0__.__TOKEN_1__.__TOKEN_2__` 的模式
- detokenize之后:方括号已转为双引号 `"HRBI"."dbo"."Users"`,正则可以匹配

### 正则设计

**三段式**(必须先处理!):
```python
r'((?:"[^"]*"|\w+)\.)(?:"dbo"|dbo)\.((?:"[^"]*"|\w+))'
# 匹配: "HRBI"."dbo"."Users" 或 HRBI.dbo.Users 或混合
```

**两段式**:
```python
r'"dbo"\.|\bdbo\.'
# 匹配: "dbo"."Users" 或 dbo.Users(两种格式都支持)
```

**重要**:三段式正则中 `"dbo"` 必须同时支持双引号包裹和裸名,因为detokenize后所有方括号标识符都变成了双引号格式。

### schema_prefix来源

从源文件名自动提取:
```python
basename = os.path.splitext(os.path.basename(input_file))[0]
schema_prefix = basename  # 如 hrbi_stage.sql → hrbi_stage
```

在 `_convert_split_output` 中传递,通过 `input_file` 参数。

## 规则3: 精确拆分增强

### `_find_next_create` 兜底函数

当找不到 `;` 或 `GO` 终止符时,用下一个 `CREATE` 关键字作为对象边界上界:

```python
def _find_next_create(sql: str, start: int) -> int:
    # 跳过字符串、注释内的CREATE
    # 匹配独立的CREATE关键字(前后非字母数字下划线)
    # 返回位置或-1
```

### 在 `find_object_end` 中的调用

所有对象类型的终止符查找都有兜底:
```python
end = find_semicolon_end(...)  # 或 find_paren_end / find_block_end
if end >= n:  # 没找到终止符,到达文件末尾
    next_create = _find_next_create(sql, start + 10)
    if next_create > start:
        boundary = next_create
        while boundary > start and sql[boundary - 1] in ' \t\r\n':
            boundary -= 1
        return boundary
```

## 开发过程关键教训

### patch工具Python缩进问题 — 终极解决方案

**问题**:patch工具修改Python文件时,方法体内的缩进经常被破坏(8空格变4空格、1空格等)。

**终极方案:用Python脚本替换整个方法**,而非用patch做局部替换:

```python
#!/usr/bin/env python3
with open('dm_converter.py') as f:
    content = f.read()

old_start = '    def _detokenize(self, content: str, token_map: Dict[str, str]) -> str:'
new_method = '''    def _detokenize(self, content: str, token_map: Dict[str, str]) -> str:
        """docstring"""
        # 方法体(8空格缩进)
    
Github ReposUpdated 5h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/fish1981bimmer/skills/sql-splitter",
      "sourceUrl": "https://clawhub.ai/fish1981bimmer/skills/sql-splitter",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T15:58:56.983Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-fish1981bimmer-sql-splitter/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-fish1981bimmer-sql-splitter/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-09T15:58:56.983Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "2.4K downloads",
      "href": "https://clawhub.ai/fish1981bimmer/sql-splitter",
      "sourceUrl": "https://clawhub.ai/fish1981bimmer/sql-splitter",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T15:58:56.983Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "3.6.3",
      "href": "https://clawhub.ai/fish1981bimmer/sql-splitter",
      "sourceUrl": "https://clawhub.ai/fish1981bimmer/sql-splitter",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-07-04T01:58:03.027Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-fish1981bimmer-sql-splitter/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-fish1981bimmer-sql-splitter/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 3.6.3",
      "description": "sql-splitter v3.6.3 - Updated SKILL.md documentation, including detailed usage guides, transformation rules, and version history up to v3.6.2. - No code-level changes listed; this release focuses on improved documentation for users. - Describes key features such as SQL object splitting, dependency analysis, and conversion rules for different SQL dialects.",
      "href": "https://clawhub.ai/fish1981bimmer/sql-splitter",
      "sourceUrl": "https://clawhub.ai/fish1981bimmer/sql-splitter",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-07-04T01:58:03.027Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 9, 2026.

Sponsored

Ads related to Sql Splitter and adjacent AI workflows.