pf_ruler 是一款基于 Go 语言的命令行工具,用于统一管理各 AI 编辑器的规则配置。
- 一键初始化规则目录结构 - 自动创建标准化的规则管理目录
- 交互式收集项目需求 - 通过问答引导收集项目技术栈、规范要求等
- 跨平台规则生成 - 支持将统一规则自动转换为各 AI 编辑器的适配格式
- 降低使用门槛 - 无需手动编写复杂配置,通过命令行交互即可完成全流程操作
- Trae - 生成
.trae/rules/project_rules.md文件 - Cursor - 生成
.cursor/rules.json文件
# 克隆项目
git clone https://github.com/pfinal/pf_ruler.git
cd pf_ruler
# 构建项目
go build -o pf_ruler .
# 或者直接运行
go run main.go# 进入项目根目录
cd ~/projects/your-project
# 执行初始化
./pf_ruler init初始化过程会:
- 创建
.ruler目录结构(包含global、project、templates子目录) - 自动处理
.gitignore配置 - 通过交互式问答收集项目需求
- 生成基础配置文件
# 生成默认平台(Trae)规则
./pf_ruler generate
# 生成指定平台规则
./pf_ruler generate --platform=cursor
# 强制覆盖现有文件
./pf_ruler generate --platform=cursor --forceyour-project/
├── .ruler/ # 规则管理目录
│ ├── config.yaml # 工具配置文件
│ ├── global/ # 全局通用规则
│ ├── project/ # 项目特定规则
│ │ ├── requirements.md # 项目需求文档
│ │ └── tech_stack.yaml # 技术栈信息
│ └── templates/ # 自定义规则模板
├── .trae/ # Trae 平台规则输出
│ └── rules/
│ └── project_rules.md
├── .cursor/ # Cursor 平台规则输出
│ └── rules.json
└── pf_ruler # 工具可执行文件
default_platform: trae # 默认生成平台
rule_priority: # 规则优先级
- project # 项目规则(最高优先级)
- global # 全局规则(次优先级)
- templates # 模板规则(可选)
last_init_time: "2025-09-03 09:02:19" # 最后初始化时间project_name: "your-project" # 项目名称
tech_stacks: # 技术栈列表
- "Go+Gin"
- "MySQL"
- "Redis"
ai_editors: # 目标AI编辑器
- "Trae"
- "Cursor"
created_at: "2025-09-03 09:02:19" # 创建时间# 1. 进入项目目录
cd ~/projects/ecommerce-backend
# 2. 初始化规则管理
./pf_ruler init
# 3. 交互式配置项目需求
? 请输入项目名称:电商后台系统
? 请选择技术栈(可多选):
◉ Go+Gin
◉ MySQL
◉ Redis
◉ JWT
? 请输入代码规范要求:函数命名采用 snake_case,每行代码不超过 80 字符
? 请输入安全约束:敏感数据(如密码)需 bcrypt 加密存储
# 4. 生成 Trae 平台规则
./pf_ruler generate --platform=trae
# 5. 生成 Cursor 平台规则
./pf_ruler generate --platform=cursorpf_ruler 支持通过"适配器接口"新增 AI 编辑器平台,无需修改核心逻辑。
- 在
pkg/platform/目录下创建新平台文件(如copilot.go) - 实现
PlatformAdapter接口:type PlatformAdapter interface { Name() string // 返回平台名称 DefaultOutputPath() string // 返回平台规则默认输出路径 Convert(ruleSet *RuleSet) ([]byte, error) // 将统一规则转换为平台格式 }
- 在工具初始化时注册适配器,即可支持
--platform=copilot命令
-
".ruler 目录不存在"
- 解决:先运行
./pf_ruler init命令初始化
- 解决:先运行
-
"文件已存在"
- 解决:使用
--force标志强制覆盖,或手动删除现有文件
- 解决:使用
-
"不支持的平台"
- 解决:检查
--platform参数,当前支持:trae、cursor
- 解决:检查
- 开发语言: Go 1.21+
- 命令行框架: Cobra
- 交互式问答: Survey
- 配置文件: YAML
- 跨平台: 支持 Windows、macOS、Linux
pf_ruler/
├── cmd/ # 命令行命令
│ ├── root.go # 根命令
│ ├── init.go # 初始化命令
│ └── generate.go # 生成命令
├── pkg/ # 核心包
│ ├── platform/ # 平台适配器
│ │ ├── base.go # 基础接口
│ │ ├── trae.go # Trae 适配器
│ │ └── cursor.go # Cursor 适配器
│ └── rules/ # 规则管理
│ ├── types.go # 规则类型定义
│ └── loader.go # 规则加载器
├── main.go # 主程序入口
└── go.mod # Go 模块文件
欢迎提交 Issue 和 Pull Request!
本项目采用 MIT 许可证。