← Back to Skills Marketplace
yaoxin521123

iris-code-formatter

by yaoxin521123 · GitHub ↗ · v3.1.0 · MIT-0
cross-platform ✓ Security Clean
290
Downloads
3
Stars
0
Active Installs
8
Versions
Install in OpenClaw
/install iris-code-formatter
Description
对InterSystems IRIS/Cache ObjectScript代码进行格式化检查、审查和自动修正。 当用户需要格式化IRIS代码、检查代码规范合规性、审查代码质量或修正不符合规范的代码时触发此技能。 支持变量命名、方法命名、锁、事务、陷阱、格式、空行、注释等多个维度的规范检查。
README (SKILL.md)

\r \r

IRIS 代码格式化规范\r

\r

概述\r

\r 本技能基于作者总结的IRIS代码规范,提供ObjectScript代码的格式化、审查和修正能力。涵盖变量命名、方法命名、锁、事务、陷阱、格式、空行、注释等多个维度,确保代码风格统一、可读性强、维护性高。\r \r

该技能的作者: 姚鑫 \r 作者邮箱: [email protected]\r \r

触发条件\r

\r 当用户提出以下请求时激活此技能:\r

  • "格式化这段IRIS代码"\r
  • "检查这段代码是否符合规范"\r
  • "审查ObjectScript代码"\r
  • "修正代码风格问题"\r
  • "按照IRIS规范格式化"\r
  • 任何涉及IRIS/Cache/ObjectScript代码格式化的需求\r \r

核心能力\r

\r

1. 变量命名规范\r

\r

1.1 基本原则\r

  • 禁止使用$#等特殊符号开始或结束\r
  • 严禁拼音与英文混合,不允许直接使用中文\r
  • 参数名、成员变量、局部变量统一使用lowerCamelCase\r
  • 常量命名全部大写\r
  • 杜绝不规范缩写,长度为7个以内单词不需要缩写\r
  • 避免无意义变量(如a, b, c)\r \r

1.2 Global命名\r

  • 临时global:对于临时Global,命名规范以^CacheTemp开头^CacheTemp*,不允许有其它的命名。旧命名方式以^TEMP*、^Temp*、^temp*、^TMP*、^Tmp*、^tmp*、开头的均不合法。\r
  • 进程global:^||TMP,节点必须携带pid\r \r

1.3 特殊变量\r

  • 布尔变量不要用is开头,使用Flag后缀(如dispFlag)\r
  • 引用global数据的变量用表ID + Data方式(如bisData)\r
  • 分割字符串索引统一用i,长度用len\r
  • 私有对象加m前缀(如mExecute)\r
  • 禁止使用系统保留字或SQL保留字(如SQLCODE)\r
  • 调用其他方法返回值用ret,禁止使用err\r
  • 变量不超过31个字符\r
  • 百分比变量以%z开头\r
  • .inc文件通用变量加前缀标识\r \r

2. 方法命名规范\r

\r

2.1 基本规则\r

  • 类名、方法名使用UpperCamelCase\r
  • 返回布尔类型方法以Is开头,加As %Boolean,正向描述(存在返回$$$YES)\r
  • 推荐使用动宾结构(Get, Set, Query等)\r
  • 函数/方法名最长不超过30个字符\r
  • 查询统一用Query,获取数据用Get\r \r

2.2 方法组织\r

  • 一个方法控制在50行以内\r
  • 方法内传递参数过多时考虑用对象方式重构\r
  • 禁止在循环里直接写SQL语句(&sql()),SQL语句应当单独建立类来保存\r
  • 非普通字符串的入参或返回值需要声明类型(数组、对象、流、%Status等)\r \r

2.3 错误处理\r

  • 返回值不能单纯返回负数\r
  • 字符串形式:负数^错误信息\r
  • JSON形式:..RetFail("错误信息")\r
  • %Status形式:$$$ERROR($$$GeneralError,"错误信息")\r \r

3. 锁规范\r

\r

  • 禁止直接锁表结构的Global\r
  • 加解锁必须加+-严格控制,必须成对出现\r
  • 加锁必须带+,否则导致解锁进程内所有锁\r
  • 加锁必须写超时退出(如:3),避免死锁\r
  • 自定义功能锁格式:^产品组代码(产品线,规范代码:唯一标识)\r
  • 私有进程全局变量名不能用作锁名\r
  • 禁止单独使用无参数锁\r
  • 使用锁时一定要下标节点\r \r

4. 事务规范\r

\r

  • 严格禁止开放性事务(必须有tc或tro)\r
  • 事务tstctro位置保持近距离,在一屏幕范围内\r
  • 严格禁止跨方法提交事务\r
  • 事务命令简写并且小写(tstctro)\r
  • 同一个方法内不应该出现事务嵌套\r
  • 事务应在保存程序的最外层\r
  • 单条SQL语句的数据保存不需要事务\r
  • tstc首尾添加空行或注释\r \r

5. 陷阱规范\r

\r

  • 严格禁止陷阱内部报错导致死进程\r
  • Not ProcedureBlock类陷阱名称统一为Err + 方法名\r
  • 默认类陷阱名称统一为Error\r
  • 通用陷阱写法:\r
    • 设置$zt = ""避免死循环\r
    • $tl > 0时执行tro避免开放性事务\r
    • 执行lock避免开放锁\r \r

6. 格式规范\r

\r

6.1 基本格式\r

  • 方法大括号一律换行显示\r
  • 运算符(=+-*/_:)左右加空格\r
  • 逗号后加空格\r
  • 方法内命令行采用一个Tab缩进(4空格宽度)\r
  • 禁止命令大小写混用,统一小写\r
  • 系统命令使用缩写(除forwhile外)\r
  • 系统函数使用缩写($e, $p, $l, $o等)\r \r

6.2 SQL格式\r

  • SQL语句一行5个字段\r
  • 换行后3个Tab缩进\r
  • 逗号在行末,不带入下行\r
  • 每行不超过120字符\r
  • SQL命令全部统一小写\r \r

6.3 字符串格式\r

  • 单行字符串拼写最多5个字段\r
  • 禁止用同一变量后加数字累加\r
  • 获取多返回值用%ArrayOfDataTypes或JSON,不建议字符串拼接\r \r

6.4 命令与函数缩写规范\r

\r 系统命令缩写规则:\r

  • forwhileifelseifelsecontinue 命令使用全拼(语义明确,表示循环结构)\r
  • 其他系统命令使用缩写形式\r \r | 全拼 | 缩写 | 说明 |\r |------|------|------|\r | set | s | 赋值 |\r | do | d | 执行 |\r | quit | q | 退出/返回 |\r | break | b | 跳出循环 |\r | kill | k | 删除变量 |\r | new | n | 新建变量 |\r | write | w | 输出 |\r | read | r | 读取 |\r | tstart | ts | 事务开始 |\r | tcommit | tc | 事务提交 |\r | trollback | tro | 事务回滚 |\r | lock | l | 加锁 |\r | open | o | 打开设备 |\r | close | c | 关闭设备 |\r | use | u | 使用设备 |\r | hang | h | 暂停 |\r | job | j | 启动作业 |\r | merge | m | 合并 |\r \r 系统函数缩写规则:\r
  • 所有系统函数使用缩写形式\r \r | 全拼 | 缩写 | 说明 |\r |------|------|------|\r | $extract | $e | 提取子串 |\r | $piece | $p | 按分隔符提取 |\r | $length | $l | 获取长度 |\r | $order | $o | 遍历global |\r | $get | $g | 安全获取值 |\r | $data | $d | 判断变量是否存在 |\r | $find | $f | 查找子串 |\r | $ascii | $a | 获取ASCII码 |\r | $char | $c | ASCII转字符 |\r | $translate | $tr | 字符替换 |\r | $justify | $j | 格式化对齐 |\r | $zboolean | $zb | 位运算 |\r | $zconvert | $zcvt | 编码转换 |\r | $zhex | $zh | 十六进制转换 |\r | $zdate | $zd | 日期格式化 |\r | $ztime | $zt | 时间格式化 |\r | $ztimestamp | $zts | 时间戳 |\r | $increment | $i | 自增 |\r | $random | $r | 随机数 |\r | $stack | $st | 堆栈信息 |\r \r

6.5 控制结构\r

  • 尽量使用对仗词(add/remove, get/set等)\r
  • 禁止{}.同时出现,推荐使用块级语法\r
  • 所有if语句都要换行写\r
  • if嵌套不宜过多,建议不超过3层\r
  • 多级if else考虑用$case替换\r
  • 与或逻辑运算统一使用&&||\r
  • 块级语法命令要全拼(forwhile而非fw)\r
  • 后置表达式要加括号,等号两侧加空格\r
  • 多条件后置表达式(如 continue: q: 后的条件):括号内部的条件运算符两侧加空格,括号与&&/||之间不加空格。例如:\r
    • 正确:q:(inci = "")&&(arcim = "")&&(phcdf = "") - 括号内=两侧有空格,括号与&&之间无空格\r
    • 错误:q:(inci = "") && (arcim = "") && (phcdf = "") - 括号与&&之间有空格,会导致编译错误\r
  • } else { 不换行,写在同一行\r \r

7. 空行规范\r

\r

  • 方法与方法之间空行隔断(1个空行)\r
  • 空行分割功能相似、逻辑内容相近的代码片段\r
  • 空行之前添加行注释#; 规则\r
  • 事务首尾一定要加空行或注释\r \r

8. 注释规范\r

\r

8.1 注释格式\r

  • 单行注释用#;,句尾注释用//\r
  • 类、方法头注释用///\r
  • 各类注释后应跟空格\r \r

8.2 注释原则\r

  • 避免无意义注释,用规范代码命名描述\r
  • 简明扼要,不要啰嗦\r
  • 避免错误注释误导\r \r

8.3 类注释\r

/// desc: 类用途描述\r
/// author:姓名全拼\r
/// date:YYYY-MM-DD\r
Class XXX.XXX\r
```\r
\r
#### 8.4 方法注释\r
```objectscript\r
/// desc:        方法描述\r
/// author:      姓名\r
/// createDate:  YYYY-MM-DD\r
/// params:      参数说明\r
/// return:      返回值说明\r
/// version:     版本\r
/// modify:      修改记录\r
/// debug:       调试方法\r
```\r
\r
## 使用方法\r
\r
### 代码审查流程\r
\r
执行以下步骤审查和修正代码:\r
\r
1. **读取代码**:获取用户提供的ObjectScript代码\r
2. **逐条检查**:按照上述规范逐项检查\r
3. **标记问题**:识别不符合规范的代码位置\r
4. **提供修正**:给出符合规范的修正版本\r
5. **说明原因**:解释每项修正的依据\r
6. **输出完整代码**:**必须**输出完整的修正后代码,包含所有类定义、方法、注释,不得省略任何部分\r
\r
### 关键修正规则(强制执行)\r
\r
#### 1. 后置表达式处理(关键!)\r
\r
多条件后置表达式必须严格遵守以下格式:\r
\r
```objectscript\r
; 正确格式 - 括号内运算符两侧加空格,括号与&&之间不加空格\r
continue:(hospId '= "")&&(hospId '= ($p(^CTLOC(locId),"^",22)))\r
q:(inci = "")&&(arcim = "")&&(phcdf = "")\r
\r
; 错误格式 - 会导致IRIS编译错误\r
continue:(hospId '= "") && (hospId '= ($p(^CTLOC(locId),"^",22)))\r
q:(inci = "") && (arcim = "") && (phcdf = "")\r
```\r
\r
**修正逻辑:**\r
- 识别后置表达式(`q:` `continue:` `b:` 等命令后的条件)\r
- 确保每个条件用括号包裹:`(条件)`\r
- 括号内运算符两侧加空格:`(a = "")` `(b \x3C= 0)`\r
- 括号与`&&`/`||`之间**绝对不能**加空格:`)&&(` 不是 `) && (`\r
- 这是IRIS编译器的硬性要求,必须严格遵守\r
\r
#### 2. 命令缩写规则\r
\r
- `for`、`while`、`if`、`elseif`、`else`、`continue` 使用全拼\r
- 其他命令使用缩写:`s`/`d`/`q`/`b`/`k`/`n`/`w`/`r`/`ts`/`tc`/`tro`/`l`/`o`/`u`/`h`/`j`/`m`\r
\r
#### 3. 系统函数缩写\r
\r
使用缩写形式:`$e`/`$p`/`$l`/`$o`/`$g`/`$d`/`$a`/`$c`/`$tr`/`$j`/`$zb`/`$zcvt`/`$zh`\r
\r
### 输出格式\r
\r
审查结果应包含:\r
\r
```\r
\r
## 代码审查报告\r
\r
### 问题汇总\r
- [严重] 问题1描述(行号)\r
- [警告] 问题2描述(行号)\r
\r
### 详细说明\r
\r
#### 1. 变量命名问题\r
**位置**:第X行\r
**问题**:描述\r
**规范依据**:引用具体规则\r
**建议修正**:\r
\r
// 修正后的代码\r
#### 2. 方法命名问题\r
\r
...\r
### 修正后完整代码\r
\r
**IMPORTANT**: 必须输出完整的修正后代码,不要省略任何部分。将用户提供的完整代码按照规范修正后全部输出。\r
// 完整修正后的代码(必须包含所有方法,不得省略)\r
\r
```\r
\r
## 规范速查表\r
\r
| 类别 | 规则 | 正确示例 | 错误示例 |\r
|------|------|----------|----------|\r
| 变量名 | lowerCamelCase | `startDate` | `startdate` |\r
| 常量 | 全大写 | `MAXCOUNT` | `MaxCount` |\r
| 布尔变量 | Flag后缀 | `dispFlag` | `isDisp` |\r
| 方法名 | UpperCamelCase, 动宾结构 | `GetName()` | `getname()` |\r
| 布尔方法 | Is开头 | `IsExist() As %Boolean` | `GetExistFlag()` |\r
| 事务 | 简写小写 | `ts` / `tc` | `TSTART` |\r
| 锁 | 带+/-和超时 | `l +^XXX:3` | `l ^XXX` |\r
| 注释符 | #; 或 // | `#; 说明 ` | `; 说明` |\r
| 空格 | 运算符两侧 | `a = b` | `a=b` |\r
| 命令 | 除for/while外使用缩写 | `s`, `d`, `q`, `for` | `set`, `do`, `quit`, `f` |\r
| 系统函数 | 使用缩写 | `$e`, `$p`, `$l`, `$o` | `$extract`, `$piece`, `$length`, `$order` |\r
| 逻辑运算 | && \|\| | `(a)&&(b)` | `a,b` |\r
| 后置表达式 | 括号内空格,括号外无空格 | `q:(a = "")&&(b = "")` | `q:(a = "") && (b = "")` |\r
\r
## 参考资源\r
\r
- `references/代码规范 - 变量.md` \r
- `references/代码规范 - 方法.md` \r
- `references/代码规范 - 格式.md` \r
- `references/代码规范 - 空行.md` \r
- `references/代码规范 - 事务.md` \r
- `references/代码规范 - 锁.md` \r
- `references/代码规范 - 陷阱.md` \r
- `references/代码规范 - 注释.md` \r
Usage Guidance
This skill appears coherent for formatting and fixing IRIS/ObjectScript and does not request credentials or install remote code. Before using: (1) Don't paste production secrets or credentials into code you submit—the skill will output full corrected code verbatim. (2) The skill's source is listed as unknown; if you plan to install it (via WorkBuddy or clawhub links in the README), verify the publisher/repository on your side. (3) If you need stricter privacy, run an offline formatter or review the SKILL.md and reference rules locally rather than sending sensitive code to an external agent. Overall the skill looks consistent with its stated purpose.
Capability Assessment
Purpose & Capability
The name/description (IRIS/ObjectScript formatter and fixer) matches the SKILL.md and the included reference rules; no extra binaries, env vars, or unrelated capabilities are requested.
Instruction Scope
Instructions are narrow and describe reading user-provided ObjectScript, checking against many style rules, marking issues, and returning a full corrected version. This is appropriate for a formatter, but the explicit requirement to 'output the complete corrected code, including all class definitions/methods/comments' means any code you supply will be reproduced verbatim (sensitive secrets in code would be returned).
Install Mechanism
Instruction-only skill with no install spec or downloads; lowest-risk install posture. The README mentions optional local copy or an npx clawhub install command, but those are standard distribution notes rather than required installer actions embedded in the skill.
Credentials
The skill declares no required environment variables, credentials, or config paths. There are no requests for unrelated secrets or system access in the SKILL.md.
Persistence & Privilege
always is false and the skill does not request persistent system-wide privileges. Autonomous invocation is allowed (platform default) but not combined with any extra privileges or credential access.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install iris-code-formatter
  3. After installation, invoke the skill by name or use /iris-code-formatter
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v3.1.0
- 新增详细CHANGELOG.md,IRIS 代码格式化Skill使用说明和参考目录文档(references/README.md) - SKILL.md归纳了关键信息,description优化为多行,增加了version字段 - 使用方法与强制修正规则区分更清晰,突出后置表达式等IRIS硬性语法敏感点 - 输出格式说明(代码审查报告结构)更加规范严谨 - 增加了规范速查表中“后置表达式”错误示例和要求 - 技能结构文档整理更清晰,可直接用于开发、用户学习或集成
v1.0.7
- 修正输出格式示例中的代码块排版与占位内容,移除了多余或误导性 Markdown 区段。 - 明确“输出格式”部分的代码审查报告、详细说明和修正后代码模板,避免歧义。 - 无功能与规范变更,仅SKILL.md文档格式优化,提升可读性和准确性。
v1.0.6
- 扩展支持 InterSystems Cache ObjectScript 代码的格式化规范及相关触发条件 - 明确规定临时 Global 命名必须以 ^CacheTemp 开头,旧命名(如 ^TMP、^TEMP 等)不合法 - 注释规范调整:主张使用 `#;` 作为单行注释,与旧版的注释符号有所不同 - 控制结构表达式空格规范更加严格,明确列出条件格式编写避免 IRIS/Cache 编译报错 - 输出标准、流程和速查表细节略有补充与修改,更精细贴合实际代码审查要求
v1.0.5
- 明确要求输出完整修正后代码,所有方法和类定义不得省略 - 控制结构格式部分细化“多条件后置表达式”空格规则,示例更具体,明确避免IRIS编译错误 - 强调输出完整代码是“必须”的(加粗显著提醒) - 无其他规范内容改动或功能修订
v1.0.4
- 概述部分调整:去除对规范出处的特定公司名称描述,改为“作者总结的IRIS代码规范” - 其余文档内容未变,仅涉及规范背景表述的修改 - 无功能或格式规范上的变更
v1.0.3
- 详细代码规范文档拆分为多个专用参考文件(变量、方法、格式、空行、事务、锁、陷阱、注释)。 - 移除了原有的总览文档 `references/coding_standards.md`,以更清晰的结构分模块维护规则。 - SKILL.md 结构精简,作者信息格式规范化,增加专用邮箱字段。 - 参考资源列表更新为按类别引用新拆分的规则文档,便于快速定位具体规范。 - 保持所有规范要点、表格、速查表内容不变,便于用户持续依照原有标准执行代码审查。
v1.0.2
- No changes in this release; version bump only. - The codebase and documentation remain identical to the previous version.
v1.0.0
iris-code-formatter 1.0.0 - Initial release of the IRIS code formatter skill. - Provides formatting, review, and automated correction for InterSystems IRIS ObjectScript code according to Donghua Yihui code standards. - Enforces consistent rules for variable/method naming, locking, transactions, error handling, code structure, formatting, comments, and SQL style. - Supports automatic detection and correction of non-compliant code. - Generates audit reports detailing issues, explanations, and suggested improvements.
Metadata
Slug iris-code-formatter
Version 3.1.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 8
Frequently Asked Questions

What is iris-code-formatter?

对InterSystems IRIS/Cache ObjectScript代码进行格式化检查、审查和自动修正。 当用户需要格式化IRIS代码、检查代码规范合规性、审查代码质量或修正不符合规范的代码时触发此技能。 支持变量命名、方法命名、锁、事务、陷阱、格式、空行、注释等多个维度的规范检查。 It is an AI Agent Skill for Claude Code / OpenClaw, with 290 downloads so far.

How do I install iris-code-formatter?

Run "/install iris-code-formatter" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is iris-code-formatter free?

Yes, iris-code-formatter is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does iris-code-formatter support?

iris-code-formatter is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created iris-code-formatter?

It is built and maintained by yaoxin521123 (@yaoxin521123); the current version is v3.1.0.

💬 Comments