关于 pythia-write
pythia-write 是用于编写 PL/SQL 的 Agent 技能,指导开发者先从相似程序和数据库元数据提取项目惯例,再编写并检查文件。它强调遵循现有代码风格、限定修改范围,并将部署交给 pythia-apply。
主要功能
- 01先读取项目惯例
- 02查找并模仿相似程序
- 03核对程序参数与表列类型
- 04按写入规则编写 PL/SQL 文件
- 05通过 lint 和模式检查
适用场景
- 01为现有代码库编写 PL/SQL 程序
- 02根据数据库签名和列类型起草对象
- 03在提交部署前检查 PL/SQL 文件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ thaildhe172591/ pythia --skill pythia-write安装后在 Claude Code 中输入/pythia-write确认已加载。
附带文件reference/patterns.md
详细介绍
编写 PL/SQL
开始时宣布:“正在使用 pythia-write——先梳理代码库的约定。”
**阶段:**学习 → 执行 — 先梳理相邻代码,再起草;将其部署到位是 pythia-apply 的工作
**开始前:**如果项目有 .pythia/conventions.md,请先阅读 —
其中的项目规则优先于以下所有通用模式,并且
pythia conventions 会显示 apply 预览将检查的命名模式。如果项目没有该文件,而开发者
描述了项目风格,请提供 pythia conventions --init — 记录一次后,
它会应用于今后的每个会话,无需反复解释。
拥有数千个过程的代码库,早已确定过程应有的样子。你的工作是编写一个 让维护者看不出与现有过程有何不同的过程 — 而不是引入更好的风格。
工作流
- 找到范例。
pythia similar <NEW_NAME>会为名称标记相同的现有程序排序;MATCHED_TOKENS列说明了匹配原因。用pythia src打开排名靠前的 两三个程序并模仿:命名、参数前缀、游标风格、错误处理、注释风格。 - 核实签名。 对于你调用的每个程序:
pythia args NAME— 获取实际参数名称、顺序、类型、默认值。绝不要 凭对相似代码的记忆猜测签名。 - 核实类型。 对于你涉及的每张表:
pythia cols TABLE— 然后根据这些列使用%TYPE/%ROWTYPE声明变量, 而不是手动照抄当前类型。这样列发生变化时,声明仍然有效。 - 编写文件。 写入路径强制执行以下规则 — 请在此遵循:
- 每个文件只包含一个对象。 包规范和包体是两个文件。
- 文件以 PL/SQL 块的
;结尾,最后一行单独放置/。 - 对象名称不带限定符,或使用与连接目标完全一致的架构进行限定 — 不匹配会在应用时被拒绝。
- 非 ASCII 字符串字面量(越南语消息、任何带重音符号的文本):
绝不要直接粘贴 — 运行
pythia unistr "<text>"并使用打印出的unistr('...'),确保文本能在任何客户端/数据库字符集下准确保留。 (COMMENT ON ... IS是例外:它只接受字面量。)
- 交付前自行检查。 先运行
pythia lint <file>— 内置标准加上 LEAD 的规则;错误必须在预览前修复。然后对照reference/patterns.md再读一遍 — 检查游标和批量处理模式、异常处理规范、绑定变量、提交责任归属。你编写或修改的每条注释都必须经过pythia-comment。
范围由开发者的描述决定,而不是你
只修改开发者指定的对象。如果影响分析显示有依赖对象会因此出错, 请列出这些对象并提出方案 — 修复它们属于单独的请求,需要单独获得明确批准。“我顺手改了”会让一个被要求修改的表,变成七个未经要求的过程重写。
约定优先于偏好
如果代码库使用显式游标,而你会写 FOR r IN,
那就使用显式游标。如果它的参数前缀看起来过时了,也照样使用。风格混杂的代码库比风格一贯但过时的代码库更糟 —
请另行向开发者提出风格修改建议,绝不要擅自更改。
何时不要使用此技能
- 新建包、API 或触发器的设计 → 先用
pythia-package设计。 - 表、列、注释 → 用
pythia-table。 - 理解现有代码 → 用
pythia-explore。 - 衡量某项更改会造成什么影响 → 用
pythia-impact(必须已完成)。 - 将文件部署到数据库 → 始终使用
pythia-apply— 绝不要使用run-sql,也不要使用sqlplus。
评论
支持 Markdown