database-schemalisted
Install: claude install-skill phoben/agent-skills
# 数据库结构快照
使用脚本完成确定性提取,Agent 负责选择目标、保护秘密、处理依赖并验收结果。此 Skill 只导出数据库逻辑结构,不导出表数据、用户、角色、授权、密码、任务调度或服务器级配置。
## 固定项目目录
所有运行数据必须位于当前项目根目录的 `.database-schema/`,不得改写为 Skill 安装目录,也不得向用户提供自定义路径参数。Git 项目使用 Git 顶层目录;非 Git 项目使用当前工作目录。
首次配置或需要新增连接时,阅读 [connections.md](references/connections.md),然后执行:
```bash
python <skill目录>/scripts/export_schema.py --init
```
初始化不会覆盖已有配置。连接配置只登记环境变量名;禁止写入明文密码。Agent 不得要求用户把密码、完整含密钥 URL 或 Token 发送到聊天中。
## 解析目标
连接别名与数据库名是两个独立参数:
- 第一个参数是 `connections.json` 中的连接别名,只描述服务器、认证和连接安全策略。
- 第二个参数是本次要导出的真实数据库名,不写入连接配置,也不放入环境变量。
- 用户显式提供时直接使用,例如 `$database-schema yuga res-v4`。
- 用户未显式提供时,Agent 可从当前任务上下文判断;任一参数无法唯一确定时,询问连接别名或数据库名。
- 没有连接配置时,引导用户初始化并配置,不猜测连接信息。
连接别名必须精确匹配;不要把数据库名或模糊子串当作连接选择结果。
## 安全预检
执行前检查:
1. `connections.json` 不含 `password`、`pwd`、`secret`、`token` 等明文秘密字段。
2. 连接引用的变量可从进程环境、项目根 `.env.local` 或 `.env` 解析。
3. 秘密来自 dotenv 时,该文件未被 Git 跟踪且已被 Git 忽略。
4. 日志、错误、命令参数和最终清单不包含秘密值。
5. 连接账户具备读取元数据和对象定义的权限,但不要求写入数据库。
脚本会强制关键安全检查。Agent 仍应在运行前检查项目 `.gitignore`,并在发现泄露风险时先停止和说明影响。
## 执行提取
```bash
python <skill目录>/scripts/export_schema.py <连接别名> <数据库名>
```
脚本按对象生成一个 SQL 文件,并保存到:
```text
.database-schema/schemas/<连接别名>/<数据库名>/<对象类型>/<对象>.sql
```
公共类型包括 `schema`、`table`、`view`、`materialized_view`、`function`、`procedure`、`trigger`、`sequence` 和 `type`;数据库特有对象使用明确目录,例如 MySQL 的 `event`、PostgreSQL 的 `extension`、SQL Server 的 `synonym`。表文件应包含列、约束和索引;触发器必须独立存放。
每个成功快照必须包含 `manifest.json`,记录连接别名、数据库类型、数据库名、导出时间、对象与相对文件,不得包含主机密码、连接 URL 或用户名。输出文件名必须可跨平台使用,并通过稳定哈希避免同名或重