← ClaudeAtlas

database-schemalisted

通过已登记的连接别名导出指定 MySQL、PostgreSQL 或 SQL Server 数据库的无业务数据 DDL 结构快照;适用于连接配置、结构提取、CLI 依赖和导出异常处理。
phoben/agent-skills · ★ 0 · API & Backend · score 70
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 或用户名。输出文件名必须可跨平台使用,并通过稳定哈希避免同名或重