关于 aif-rules
aif-rules 是用于为项目添加简明约定的 AI Factory 技能,可管理通用规则和特定领域规则,并支持直接输入或交互式添加。
主要功能
- 01添加项目通用规则
- 02创建领域专属规则文件
- 03读取配置的路径与语言
- 04检查重复规则
适用场景
- 01记录项目级编码要求
- 02编写 API 或前端约定
- 03通过交互提示添加规则
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lee-to/ ai-factory --skill aif-rules安装后在 Claude Code 中输入/aif-rules确认已加载。
详细介绍
AI Factory Rules - 项目约定
为当前项目添加简短、可执行的规则和约定。规则将保存到已配置的 RULES.md 产物中(默认:.ai-factory/RULES.md),并在任务执行前由 /aif-implement 自动加载。
规则层级
AI Factory 支持三级规则层级:
-
RULES.md - 公理(通用项目规则)
- 由此技能(
/aif-rules)管理 - 简短、扁平的硬性要求列表
- 由所有技能加载
- 由此技能(
-
rules/base.md - 项目特定的基础约定
- 在项目设置期间由
/aif创建 - 命名约定、模块边界、错误处理模式
- 根据代码库分析自动检测
- 在项目设置期间由
-
rules. - 特定领域的约定
- 由此技能(模式 C)创建
- 在
.ai-factory/config.yaml中注册为命名键,例如rules.api - 特定领域的模式和约束
优先级: 越具体的规则优先级越高。rules.<area> > rules/base.md > RULES.md
工作流
步骤 0:加载配置
首先: 如果 .ai-factory/config.yaml 存在,则读取它以解析:
- 路径:
paths.rules_file和paths.rules - 语言:
language.ui用于提示词和摘要,language.artifacts用于规则产物,language.technical_terms用于规则中的人类可读技术术语
如果 config.yaml 不存在,则使用默认值:
- RULES.md:
.ai-factory/RULES.md - rules/:
.ai-factory/rules/ ui_language:enartifact_language:entechnical_terms_policy:keep
解析后的语言值:
ui_language = language.ui || "en"artifact_language = language.artifacts || language.ui || "en"technical_terms_policy = language.technical_terms || "keep"
如果 technical_terms_policy 不是 keep、translate 或 mixed 之一,则按 keep 处理。english 等旧版值也按 keep 处理。
所有 AskUserQuestion 提示、进度更新、确认信息和下一步指引都必须使用 ui_language 撰写。
在 paths.rules_file 和 paths.rules/<area>.md 下生成或更新的规则产物都必须使用 artifact_language 撰写。
模板和示例定义的是结构,而不是固定的英文输出。如果 artifact_language 不是 en,保存前应翻译人类可读的标题、备注、规则文本、标签和确认说明。保持 Markdown 结构、路径、命令、配置键(例如 rules.<area>)、领域名称、代码标识符、软件包名称、API 名称和原始错误信息不变。对其他人类可读术语应用 technical_terms_policy。
步骤 0.1:加载技能上下文
读取 .ai-factory/skill-context/aif-rules/SKILL.md —— 如果该文件存在,则为必需步骤。
此文件包含 /aif-evolve 根据补丁、代码库约定和技术栈分析积累的项目特定规则。这些规则针对当前项目进行了定制。
如何应用技能上下文规则:
- 将其视为此技能通用说明的项目级覆盖规则
- 如果技能上下文规则与此 SKILL.md 中的一般规则冲突,以技能上下文规则为准(更具体的上下文优先级更高,遵循与嵌套 CLAUDE.md 文件相同的原则)
- 如果不存在冲突,则同时应用两者:SKILL.md 中的一般规则和技能上下文中的项目规则
- 即使技能上下文规则似乎与此技能的默认规则矛盾,也不得忽略它们——这些规则的存在是因为项目实践证明默认规则不够充分
- 重要: 技能上下文规则适用于此技能的所有输出,包括 RULES.md 格式和规则表述。如果技能上下文规则规定“规则必须遵循格式 X”或“RULES.md 必须包含章节 Y”,则必须遵守。生成违反技能上下文规则的规则属于错误。
执行要求: 生成任何产物后,都要对照所有技能上下文规则进行检查。如果违反任何规则,应在向用户展示前修正产物。
步骤 1:确定模式
Check $ARGUMENTS:
- Starts with "area:" or "area "? -> Mode C: Area rules
- Has text? -> Mode A: Direct add
- No arguments? -> Mode B: Interactive
模式 A:直接添加
用户将规则文本作为参数提供:
/aif-rules Always use DTO classes instead of arrays
使用提供的文本作为规则,跳到步骤 2。
模式 B:交互式
未提供参数:
/aif-rules
通过 AskUserQuestion 询问:
What rule or convention would you like to add?
Examples:
- Always use DTO classes instead of arrays for data transfer
- Routes must use kebab-case
- All database queries go through repository classes
- Never use raw SQL, always use the query builder
- Log every external API call with request/response
模式 C:区域规则
用户想要创建或更新特定区域的规则:
/aif-rules area:api
/aif-rules area frontend
工作流:
-
解析参数中的区域名称(例如:
api、frontend、backend、database) -
在已配置的规则目录中解析区域文件路径。 默认:
.ai-factory/rules/<area>.md -
检查区域文件是否存在:
Glob: <resolved rules dir>/<area>.md -
如果文件不存在 -> 使用以下标头创建文件:
# <Area> Rules > Area-specific conventions for <area>. Loaded after rules/base.md. ## Rules - [first rule] -
如果文件存在 -> 询问用户要添加什么规则:
AskUserQuestion: What rule would you like to add to <area>.md? Current rules in <area>.md: - [existing rule 1] - [existing rule 2] Options: 1. Add new rule - specify below 2. View full file 3. Cancel -
使用
Edit在## Rules部分末尾追加规则。 -
在
.ai-factory/config.yaml中注册该区域:- 确保
rules.<area>指向解析得到的区域规则文件路径 - 如果
config.yaml尚不存在,则使用默认值和新的rules.<area>条目创建最简配置框架 - 保留现有的
rules.base和其他命名的rules.<other-area>条目
- 确保
-
确认:
Rule added to <resolved area rules file> and registered as `rules.<area>` in config.yaml: - [the rule] Total <area> rules: [count] -
模式 C 完成后立即停止。
- 不要继续执行下面的步骤 2 / 步骤 3 / 步骤 4。
- 这些步骤仅适用于解析得到的
paths.rules_file文件中的顶层公理规则。 - 区域规则仅属于
<resolved rules dir>/<area>.md,并须在config.yaml中通过匹配的rules.<area>注册。
常见区域:
api- REST/GraphQL API 约定frontend- UI 组件、状态管理backend- 服务、业务逻辑database- 查询、迁移、架构testing- 测试模式、覆盖率security- 身份验证、验证、清理
步骤 2:读取或创建 RULES.md
检查解析得到的 RULES.md 路径是否存在:
Glob: <resolved RULES.md path>
如果文件不存在 -> 使用标头和第一条规则创建文件:
# Project Rules
> Short, actionable rules and conventions for this project. Loaded automatically by /aif-implement.
## Rules
- [new rule here]
如果文件存在 -> 读取文件,然后在规则列表末尾追加新规则。
步骤 3:编写规则
使用 Edit 在 ## Rules 部分末尾追加新规则,格式为 - 列表项。
格式规则:
- 每条规则占一行,以
-开头 - 规则应简短且可执行(一句话)
- 不使用类别、标题或子列表——仅使用扁平列表
- 不得重复——如果规则已存在(含义相同),告知用户并跳过
- 如果用户一次提供多条规则(以换行符或分号分隔),则每条单独添加一行
- 以
artifact_language编写生成的规则文本;必要时翻译用户提供的可读规则文本,使持久化文件符合language.artifacts,同时保留步骤 0 中的稳定技术标记。
步骤 4:确认
Rule added to <resolved RULES.md path>:
- [the rule]
Total rules: [count]
规则
- 每行一条规则 - 使用扁平列表,不嵌套
- 不设类别 - 保持简单,不在规则部分中添加标题
- 不得重复 - 添加前检查是否存在含义相同的规则
- 使用可执行的表述 - 规则应为清晰的指令(“始终……”“绝不……”“使用……”“路由必须……”)
- RULES.md 位置 - 使用解析得到的
paths.rules_file路径(默认:.ai-factory/RULES.md) - 区域注册 - 每个区域规则文件都必须在
config.yaml中对应注册为rules.<area> - 所有权边界 - 此命令负责管理已配置的 RULES.md 文件,并可更新
.ai-factory/config.yaml中的rules.*子集;除非用户明确要求,否则其他上下文文件仅可读取,不可修改