mcpField
A
aif-rules

aif-rules

github.com/lee-toAgent 工作流1.1k97 次安装今天更新
代码仓库

关于 aif-rules

aif-rules 是用于为项目添加简明约定的 AI Factory 技能,可管理通用规则和特定领域规则,并支持直接输入或交互式添加。

主要功能

  1. 01添加项目通用规则
  2. 02创建领域专属规则文件
  3. 03读取配置的路径与语言
  4. 04检查重复规则

适用场景

  1. 01记录项目级编码要求
  2. 02编写 API 或前端约定
  3. 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 支持三级规则层级:

  1. RULES.md - 公理(通用项目规则)

    • 由此技能(/aif-rules)管理
    • 简短、扁平的硬性要求列表
    • 由所有技能加载
  2. rules/base.md - 项目特定的基础约定

    • 在项目设置期间由 /aif 创建
    • 命名约定、模块边界、错误处理模式
    • 根据代码库分析自动检测
  3. 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:en
  • artifact_language:en
  • technical_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

工作流:

  1. 解析参数中的区域名称(例如:api、frontend、backend、database)

  2. 在已配置的规则目录中解析区域文件路径。 默认:.ai-factory/rules/<area>.md

  3. 检查区域文件是否存在:

    Glob: <resolved rules dir>/<area>.md
    
  4. 如果文件不存在 -> 使用以下标头创建文件:

    # <Area> Rules
    
    > Area-specific conventions for <area>. Loaded after rules/base.md.
    
    ## Rules
    
    - [first rule]
    
  5. 如果文件存在 -> 询问用户要添加什么规则:

    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
    
  6. 使用 Edit 在 ## Rules 部分末尾追加规则。

  7. 在 .ai-factory/config.yaml 中注册该区域:

    • 确保 rules.<area> 指向解析得到的区域规则文件路径
    • 如果 config.yaml 尚不存在,则使用默认值和新的 rules.<area> 条目创建最简配置框架
    • 保留现有的 rules.base 和其他命名的 rules.<other-area> 条目
  8. 确认:

    Rule added to <resolved area rules file> and registered as `rules.<area>` in config.yaml:
    
    - [the rule]
    
    Total <area> rules: [count]
    
  9. 模式 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]

规则

  1. 每行一条规则 - 使用扁平列表,不嵌套
  2. 不设类别 - 保持简单,不在规则部分中添加标题
  3. 不得重复 - 添加前检查是否存在含义相同的规则
  4. 使用可执行的表述 - 规则应为清晰的指令(“始终……”“绝不……”“使用……”“路由必须……”)
  5. RULES.md 位置 - 使用解析得到的 paths.rules_file 路径(默认:.ai-factory/RULES.md)
  6. 区域注册 - 每个区域规则文件都必须在 config.yaml 中对应注册为 rules.<area>
  7. 所有权边界 - 此命令负责管理已配置的 RULES.md 文件,并可更新 .ai-factory/config.yaml 中的 rules.* 子集;除非用户明确要求,否则其他上下文文件仅可读取,不可修改

评论

支持 Markdown