Token导航 LogoToken导航

Agent Skill · 研究检索

add-form-validation-rule(添加表单验证规则)

add-form-validation-rule 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

add-form-validation-rule 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为只读;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,674 个 Skill 里排第 71,089。

总安装 196周安装 8GitHub Stars 公开资料未说明下载 63核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:add-form-validation-rule(添加表单验证规则)
来源仓库:https://github.com/sakumyz/skills
仓库路径:skills/add-form-validation-rule
安装命令:
npx skills add https://github.com/sakumyz/skills --skill add-form-validation-rule
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/sakumyz/skills --skill add-form-validation-rule

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

用于为 Ant Design Vue 表单系统添加自定义校验规则。需先在 BuiltInRules 接口中声明新规则类型与参数格式。规则逻辑实现在 useForm/getAntDFormRules.ts 的 simpleRules 或 complexRules 中。

支持布尔值、字符串、数字、正则及 JSON 参数等多种参数类型。修改后应通过单元测试验证规则正确性与边界情况处理。

来源仓库内路径:skills/add-form-validation-rule

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/sakumyz/skills --skill add-form-validation-rul…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它标注为只读,先用只读任务试一次,确认行为符合预期再扩大使用范围。

常见问题

6 条

add-form-validation-rule 怎么安装?

在终端执行 npx skills add https://github.com/sakumyz/skills --skill add-form-validation-rule。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

add-form-validation-rule 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

add-form-validation-rule 需要什么权限?

权限级别是只读。该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

add-form-validation-rule 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

add-form-validation-rule 用的人多吗?

公开数据是累计安装 196 次,近一周安装 8 次,下载 63 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

add-form-validation-rule 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。
  • 标注为只读权限,试用阶段不容易误改本地文件。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 只想先试试效果、不希望它改动本地文件的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
add-form-validation-rule

添加表单验证规则 · 本页

196—只读未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

新增表单校验规则

本 skill 提供一套标准的工作流程,用于为项目的表单验证系统添加新的校验规则。

概述

项目采用 Ant Design Vue 4.x + 自定义规则引擎 的表单验证方案:

  • 类型定义:src/components/atoms/AtmForm/index.ts 中的 BuiltInRules 接口
  • 规则实现:src/hooks/useForm/getAntDFormRules.ts 中的规则转换逻辑
  • 验证函数:src/utils/validation/ 目录下的具体验证实现
  • 单元测试:src/hooks/useForm/getAntDFormRules.spec.ts 中的测试用例

核心流程

1. 添加类型定义

位置:src/components/atoms/AtmForm/index.ts

在 BuiltInRules 接口中添加新的规则属性:

export interface BuiltInRules {
  // 示例:添加新规则
  myNewRule?: string | number | boolean | RegExp
}

规则类型指南:

  • 简单布尔规则(无参数):boolean — 如 email?: boolean
  • 带参数的规则:根据参数类型 — 如 dateFormat?: string、maxValue?: number
  • 多参数规则:string(JSON格式)— 如 range?: '[1,10]'
  • 正则表达式:RegExp 类型
  • 数组参数:string[] | string — 如 fileExtension?: string | string[]

2. 实现规则逻辑

位置:src/hooks/useForm/getAntDFormRules.ts

简单规则(simpleRules)- 正则/直接模式

用于无需参数的规则,在 simpleRules 对象中添加:

const simpleRules: Record<string, Rule> = {
  mySimpleRule: {
    pattern: /your-regex-pattern/,
    message: '错误提示文案',
    trigger: 'blur'
  }
}
复杂规则(getValidationRule)- 自定义验证器

在 getValidationRule 函数返回的规则对象中添加:

myComplexRule: {
  validator: (_, value) => {
    // 验证逻辑
    return validationHelper(validateResult, errorMessage);
  },
  trigger: rule?.trigger || 'blur',
  transform: rule?.transform
}

验证函数调用:优先使用已有验证函数(如 validateDateFormat、validateNumberRange),减少新增文件。

2.1 更新 isBuiltInRule 函数

位置:src/hooks/useForm/getAntDFormRules.ts 中的 isBuiltInRule 函数

在添加新规则属性到 BuiltInRules 接口后,必须在 isBuiltInRule 函数中的 ruleKeys 数组里添加对应的属性名:

function isBuiltInRule(value: any): value is RuleOptions {
  if (!isObject(value)) return false

  const ruleKeys = [
    'required',
    'pattern',
    // ... 其他现有属性 ...
    'myNewRule' // ← 添加新属性名
  ]

  // ... 后续逻辑保持不变 ...
}
⚠️ 这一步容易遗漏! 如果不更新 ruleKeys,新规则将被错误地识别为无效对象,导致规则处理失败。

3. 添加或重用验证函数

位置:src/utils/validation/ 目录

决策树:

  1. 如果是正则模式(简单规则),直接在 simpleRules 中定义,不需要创建验证函数
  2. 如果需要复杂验证逻辑:

- ✅ 优先选择:现有的 .ts 文件(date.ts、number.ts、string.ts、file.ts) - ❌ 最后选择:创建新的验证文件,仅当逻辑完全不相关时

验证函数特征:

  • 输入参数是值和规则配置
  • 返回 boolean 或 {valid: boolean; message?: string}
  • 处理 null、undefined 等边界情况

4. 编写单元测试

位置:src/hooks/useForm/getAntDFormRules.spec.ts

测试模板:

it('myNewRule 规则正确转换', () => {
  const rules: FormRules = {
    field: {
      myNewRule: true // 或对应的参数值
    }
  }

  const result = getAntDFormRules(rules)
  const fieldRules = result!.field as Rule[]

  expect(fieldRules).toContainEqual({
    pattern: expect.any(RegExp), // 或 validator: expect.any(Function)
    message: expect.any(String),
    trigger: 'blur'
  })
})

// 对于带参数的规则,添加验证器功能测试
it('myNewRule 验证器正确工作', async () => {
  const rules: FormRules = {
    field: {
      myNewRule: 'paramValue'
    }
  }

  const result = getAntDFormRules(rules)
  const fieldRules = result!.field as Rule[]
  const myRule = fieldRules.find(rule => rule.validator)

  // 成功情况
  await expect(myRule!.validator!({}, 'validValue', () => {})).resolves.toBeUndefined()

  // 失败情况
  await expect(myRule!.validator!({}, 'invalidValue', () => {})).rejects.toThrow('错误提示文案')
})

5. 执行测试

# 运行指定测试文件
npm test -- getAntDFormRules.spec.ts --run

# 运行所有表单相关测试
npm test -- useForm --run

# 查看测试覆盖率
npm test -- --coverage --run

代码示例

示例 1:简单的正则校验规则

添加一个汉字验证规则:

1. 类型定义 (AtmForm/index.ts):

export interface BuiltInRules {
  chineseCharacters?: boolean
}

2. 规则实现 (getAntDFormRules.ts):

const simpleRules: Record<string, Rule> = {
  chineseCharacters: {
    pattern: /^[\u4e00-\u9fff]+$/,
    message: '仅支持汉字输入',
    trigger: 'blur'
  }
}

3. 单元测试 (getAntDFormRules.spec.ts):

it('chineseCharacters 规则正确转换', () => {
  const rules: FormRules = {
    name: { chineseCharacters: true }
  }
  const result = getAntDFormRules(rules)
  expect(result!.name).toContainEqual({
    pattern: expect.any(RegExp),
    message: '仅支持汉字输入',
    trigger: 'blur'
  })
})

示例 2:带参数的自定义验证规则

添加一个字符串长度百分比验证规则(例如,验证实际输入不超过最大长度的80%):

1. 类型定义 (AtmForm/index.ts):

export interface BuiltInRules {
  percentageLength?: number // 0-100 表示百分比
}

2. 验证函数 (src/utils/validation/string.ts - 复用现有文件):

export function validatePercentageLength(value: unknown, percentage: number): boolean {
  if (!value || percentage <= 0 || percentage > 100) return true
  const maxLength = Math.ceil((value as string).length / (percentage / 100))
  return (value as string).length <= maxLength
}

3. 规则实现 (getAntDFormRules.ts):

// 在 getValidationRule 函数中添加
percentageLength: {
  validator: (_, value) => {
    if (isNumber(ruleValue)) {
      return validationHelper(
        validatePercentageLength(value, ruleValue),
        `输入长度不能超过最大值的${ruleValue}%`
      );
    }
    return Promise.reject(new Error('percentageLength 规则值必须为数字'));
  },
  trigger: rule?.trigger || 'blur',
  transform: rule?.transform
}

4. 单元测试 (getAntDFormRules.spec.ts):

it('percentageLength 验证器正确工作', async () => {
  const rules: FormRules = {
    field: { percentageLength: 80 }
  }
  const result = getAntDFormRules(rules)
  const fieldRules = result!.field as Rule[]
  const rule = fieldRules.find(r => r.validator)

  await expect(rule!.validator!({}, 'test', () => {})).resolves.toBeUndefined()

  await expect(rule!.validator!({}, 'x'.repeat(1000), () => {})).rejects.toThrow()
})

重要检查清单

  • 已在 BuiltInRules 接口中添加新属性(必须)
  • 已在 isBuiltInRule 函数的 ruleKeys 数组中添加对应属性名(必须)
  • 已在 getValidationRule 或 simpleRules 中实现规则逻辑(必须)
  • 如有新的验证函数,已添加到相应的 src/utils/validation/*.ts 文件(可选)
  • 已编写单元测试用例(必须)
  • 所有测试通过:npm test -- getAntDFormRules.spec.ts --run
  • 代码遵循项目的 TypeScript 和 ESLint 规范

关键注意事项

  1. isBuiltInRule 函数更新:这一步已在核心流程的第 2.1 步中详细说明,添加新规则属性后,必须在 getAntDFormRules.ts 中的 isBuiltInRule 函数的 ruleKeys 数组中添加新属性名,否则规则将被识别为无效对象。
  2. 错误消息本地化:所有错误消息应使用日语,可通过以下方式获取:

- 使用 getMessageByCode() 调用已有的常数消息 - 或直接编写日语文本

  1. 验证函数复用:优先复用 src/utils/validation/ 中已有的函数,减少代码重复和维护成本。
  2. 边界情况处理:验证函数必须正确处理以下情况:

- null、undefined → 应返回 true(表示通过,因为非必填) - 空字符串 '' → 应返回 true(非必填字段) - 空数组 [] → 应返回 true - 仅 required: true 时才对空值进行拒绝

  1. 触发时机:根据规则类型选择合适的 trigger:

- 'blur' — 字符格式、文本长度等验证 - 'change' — 文件上传、枚举选择等 - 数组 ['blur', 'change'] — 需要多次触发的验证

常用验证函数参考

函数位置功能
validateDateFormatvalidation/date.ts验证日期格式
validateDateRangevalidation/date.ts验证日期在某个范围内
validateNumberRangevalidation/number.ts验证数值范围
validateEmailvalidation/string.ts验证邮箱格式
validateVisualLengthvalidation/string.ts验证可视长度(全角2字符、半角1字符计算)
valideFileExtensionvalidation/file.ts验证文件扩展名

平台分布

Codex

35.23%
按下载量换算22

Claude

27.97%
按下载量换算18

Cursor

19.36%
按下载量换算12

Gemini CLI

10.63%
按下载量换算7

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills