随着规则库的增长,规则的组织和分类变得至关重要。一个良好的组织结构可以帮助您和您的团队快速找到需要的规则,并确保规则的可维护性。
根据规则的功能和用途进行分类是最常用的方法之一:
rules-library/
├── code-quality/ # 代码质量检查规则
├── documentation/ # 文档生成和验证规则
├── workflow/ # 工作流自动化规则
├── testing/ # 测试相关规则
└── security/ # 安全检查规则
优点:
- 规则的功能一目了然
- 易于查找特定目的的规则
- 与开发流程中的实际需求对应
示例:
# 创建基于功能的分类目录
mkdir -p ~/cursor-rules-library/categories/{code-quality,documentation,workflow,testing,security}在Terminal中:
# Windows CMD
@echo off
rem 创建基于功能的分类目录
set libraryPath=%USERPROFILE%\cursor-rules-library
if not exist "%libraryPath%\categories\code-quality" mkdir "%libraryPath%\categories\code-quality"
if not exist "%libraryPath%\categories\documentation" mkdir "%libraryPath%\categories\documentation"
if not exist "%libraryPath%\categories\workflow" mkdir "%libraryPath%\categories\workflow"
if not exist "%libraryPath%\categories\testing" mkdir "%libraryPath%\categories\testing"
if not exist "%libraryPath%\categories\security" mkdir "%libraryPath%\categories\security"
# Linux/macOS
#!/bin/bash
# 创建基于功能的分类目录
libraryPath="$HOME/cursor-rules-library"
mkdir -p "$libraryPath/categories/code-quality"
mkdir -p "$libraryPath/categories/documentation"
mkdir -p "$libraryPath/categories/workflow"
mkdir -p "$libraryPath/categories/testing"
mkdir -p "$libraryPath/categories/security"根据规则适用的技术栈或编程语言进行分类:
rules-library/
├── javascript/ # JavaScript相关规则
├── python/ # Python相关规则
├── react/ # React相关规则
├── nodejs/ # Node.js相关规则
└── database/ # 数据库相关规则
优点:
- 针对特定技术的规则集中管理
- 便于技术专家维护
- 与项目的技术选择直接对应
示例:
# 创建基于技术栈的分类目录
mkdir -p ~/cursor-rules-library/tech-stack/{javascript,python,react,nodejs,database}在Terminal中:
# Windows CMD
@echo off
rem 创建基于技术栈的分类目录
set libraryPath=%USERPROFILE%\cursor-rules-library
if not exist "%libraryPath%\categories\javascript" mkdir "%libraryPath%\categories\javascript"
if not exist "%libraryPath%\categories\python" mkdir "%libraryPath%\categories\python"
if not exist "%libraryPath%\categories\java" mkdir "%libraryPath%\categories\java"
if not exist "%libraryPath%\categories\csharp" mkdir "%libraryPath%\categories\csharp"
if not exist "%libraryPath%\categories\go" mkdir "%libraryPath%\categories\go"
if not exist "%libraryPath%\categories\rust" mkdir "%libraryPath%\categories\rust"
# Linux/macOS
#!/bin/bash
# 创建基于技术栈的分类目录
libraryPath="$HOME/cursor-rules-library"
mkdir -p "$libraryPath/categories/javascript"
mkdir -p "$libraryPath/categories/python"
mkdir -p "$libraryPath/categories/java"
mkdir -p "$libraryPath/categories/csharp"
mkdir -p "$libraryPath/categories/go"
mkdir -p "$libraryPath/categories/rust"在大型组织中,可以按照团队职责划分规则:
rules-library/
├── frontend/ # 前端团队规则
├── backend/ # 后端团队规则
├── devops/ # DevOps团队规则
├── data-science/ # 数据科学团队规则
└── security/ # 安全团队规则
优点:
- 明确规则的所有权和维护责任
- 符合组织结构
- 方便团队协作和知识共享
除了目录结构外,使用标签系统可以提供更灵活的分类方式:
{
"id": "js_best_practices",
"name": "JavaScript最佳实践",
"tags": ["javascript", "best-practices", "code-quality", "es6", "linting"]
}这样,一个规则可以同时属于多个类别,便于通过不同维度查找。
为了有效利用标签系统,可以创建一个标签索引文件:
# 创建标签索引
cat > ~/cursor-rules-library/tags-index.json << EOL
{
"tags": {
"javascript": [
"js_best_practices",
"js_performance_checks"
],
"best-practices": [
"js_best_practices",
"python_code_style",
"react_component_standards"
],
"code-quality": [
"js_best_practices",
"code_complexity_checker",
"duplicate_code_detector"
]
}
}
EOL@echo off
rem 创建标签索引
set libraryPath=%USERPROFILE%\cursor-rules-library
(
echo {
echo "tags": {
echo "javascript": [
echo "js_best_practices",
echo "js_performance_checks"
echo ],
echo "best-practices": [
echo "js_best_practices",
echo "python_code_style",
echo "react_component_standards"
echo ],
echo "code-quality": [
echo "js_best_practices",
echo "code_complexity_checker",
echo "duplicate_code_detector"
echo ]
echo }
echo }
) > "%libraryPath%\tags-index.json"在每个目录中添加README文件,描述该目录的规则用途和使用方法:
# 创建README文件
cat > ~/cursor-rules-library/categories/code-quality/README.md << EOL
# 代码质量规则
本目录包含用于检查和提高代码质量的规则。
## 规则列表
- **js_best_practices**: JavaScript编码最佳实践检查
- **code_complexity_checker**: 代码复杂度检查
- **duplicate_code_detector**: 重复代码检测
## 使用指南
将这些规则添加到项目的\`.cursor/rules/\`目录中,以启用代码质量检查。
## 贡献指南
添加新规则时,请确保:
1. 遵循命名约定
2. 提供详细文档
3. 添加示例
EOL@echo off
rem 创建README文件
set libraryPath=%USERPROFILE%\cursor-rules-library
if not exist "%libraryPath%\categories\code-quality" mkdir "%libraryPath%\categories\code-quality"
(
echo # 代码质量规则
echo.
echo 本目录包含用于检查和提高代码质量的规则。
echo.
echo ## 规则列表
echo.
echo - **js_best_practices**: JavaScript编码最佳实践检查
echo - **code_complexity_checker**: 代码复杂度检查
echo - **duplicate_code_detector**: 重复代码检测
echo.
echo ## 使用指南
echo.
echo 将这些规则添加到项目的`.cursor/rules/`目录中,以启用代码质量检查。
echo.
echo ## 贡献指南
echo.
echo 添加新规则时,请确保:
echo 1. 遵循命名约定
echo 2. 提供详细文档
echo 3. 添加示例
) > "%libraryPath%\categories\code-quality\README.md"规则集是一组相关规则的集合,可以一次性应用到项目中:
# 创建规则集
cat > ~/cursor-rules-library/rule-sets/javascript-standards.json << EOL
{
"name": "JavaScript Standards",
"description": "JavaScript编码标准规则集",
"version": "1.0.0",
"rules": [
"js_best_practices",
"js_performance_checks",
"js_security_rules"
]
}
EOL@echo off
rem 创建规则集
set libraryPath=%USERPROFILE%\cursor-rules-library
if not exist "%libraryPath%\rule-sets" mkdir "%libraryPath%\rule-sets"
(
echo {
echo "name": "JavaScript Standards",
echo "description": "JavaScript编码标准规则集",
echo "version": "1.0.0",
echo "rules": [
echo "js_best_practices",
echo "js_performance_checks",
echo "js_security_rules"
echo ]
echo }
) > "%libraryPath%\rule-sets\javascript-standards.json"为了方便将规则集应用到项目中,可以创建导入脚本:
# 创建导入脚本
mkdir -p ~/cursor-rules-library/scripts
cat > ~/cursor-rules-library/scripts/import-ruleset.sh << EOL
#!/bin/bash
# 导入规则集到项目
if [ -z "$1" ] || [ -z "$2" ]; then
echo "用法: ./import-ruleset.sh <规则集名称> <项目目录>"
exit 1
fi
RULESET_NAME="$1"
PROJECT_DIR="$2"
LIBRARY_DIR="$HOME/cursor-rules-library"
RULESET_FILE="$LIBRARY_DIR/rule-sets/$RULESET_NAME.json"
if [ ! -f "$RULESET_FILE" ]; then
echo "错误: 规则集 '$RULESET_NAME' 不存在"
exit 1
fi
# 创建项目规则目录
mkdir -p "$PROJECT_DIR/.cursor/rules"
# 读取规则集
RULES=$(jq -r '.rules[]' "$RULESET_FILE")
# 导入规则
for RULE in $RULES; do
# 查找规则文件路径
RULE_PATH=$(jq -r ".rules[] | select(.id == \"$RULE\") | .path" "$LIBRARY_DIR/rules-index.json")
if [ -n "$RULE_PATH" ] && [ -f "$LIBRARY_DIR/$RULE_PATH" ]; then
cp "$LIBRARY_DIR/$RULE_PATH" "$PROJECT_DIR/.cursor/rules/"
echo "导入规则: $RULE"
else
echo "警告: 找不到规则 '$RULE'"
fi
done
echo "规则集 '$RULESET_NAME' 已导入到项目 '$PROJECT_DIR'"
EOL
# 添加执行权限
chmod +x ~/cursor-rules-library/scripts/import-ruleset.sh@echo off
rem 创建导入脚本
set libraryPath=%USERPROFILE%\cursor-rules-library
if not exist "%libraryPath%\scripts" mkdir "%libraryPath%\scripts"
(
echo @echo off
echo rem 导入规则集到项目
echo.
echo if "%%~1"=="" goto usage
echo if "%%~2"=="" goto usage
echo.
echo set RULESET_NAME=%%~1
echo set PROJECT_DIR=%%~2
echo set LIBRARY_DIR=%%USERPROFILE%%\cursor-rules-library
echo set RULESET_FILE=%%LIBRARY_DIR%%\rule-sets\%%RULESET_NAME%%.json
echo.
echo if not exist "%%RULESET_FILE%%" (
echo echo 错误: 规则集 '%%RULESET_NAME%%' 不存在
echo exit /b 1
echo )
echo.
echo rem 创建项目规则目录
echo if not exist "%%PROJECT_DIR%%\.cursor\rules" mkdir "%%PROJECT_DIR%%\.cursor\rules"
echo.
echo rem 导入规则(注意:此处简化版本,CMD批处理无法像bash那样轻松解析JSON)
echo rem 实际使用时可能需要使用PowerShell或专用JSON解析工具
echo echo 正在导入规则集 '%%RULESET_NAME%%' 到项目 '%%PROJECT_DIR%%'
echo copy "%%RULESET_FILE%%" "%%PROJECT_DIR%%\.cursor\ruleset.json"
echo.
echo goto :eof
echo.
echo :usage
echo echo 用法: import-ruleset.bat ^<规则集名称^> ^<项目目录^>
echo exit /b 1
) > "%libraryPath%\scripts\import-ruleset.bat"使用一致的命名约定使规则更易于查找和理解:
- 规则ID:使用下划线命名法,如
js_best_practices - 规则文件:使用连字符命名法,如
js-best-practices.mdc - 目录名:使用连字符命名法,如
code-quality
在添加新规则前,检查是否已存在类似功能的规则:
# 搜索现有规则
grep -r "var\\s+\\w+" ~/cursor-rules-library/categories/@echo off
rem 搜索现有规则
set libraryPath=%USERPROFILE%\cursor-rules-library
findstr /s /r /c:"var[[:space:]]\+[a-zA-Z0-9_]\+" "%libraryPath%\categories\*.*"如果规则之间存在依赖关系,在元数据中明确标出:
metadata:
dependencies: [
"base_style_rules",
"common_patterns"
]
</rule>
并创建依赖图以可视化依赖关系:
# 创建依赖图
cat > ~/cursor-rules-library/metadata/dependencies.json << EOL
{
"dependencies": {
"js_best_practices": ["base_style_rules", "common_patterns"],
"react_component_standards": ["js_best_practices"],
"typescript_rules": ["js_best_practices"]
}
}
EOL为每个规则创建一个文档模板,确保文档的完整性:
# 创建规则文档模板
cat > ~/cursor-rules-library/templates/rule-docs-template.md << EOL
# {{RULE_NAME}}
## 概述
{{RULE_DESCRIPTION}}
## 用途
- {{PURPOSE_1}}
- {{PURPOSE_2}}
- {{PURPOSE_3}}
## 配置
json
{
"option1": "value1",
"option2": "value2"
}
## 示例
### 触发规则的代码
javascript
{{BAD_CODE_EXAMPLE}}
### 符合规则的代码
javascript
{{GOOD_CODE_EXAMPLE}}
## 相关规则
- {{RELATED_RULE_1}}
- {{RELATED_RULE_2}}
## 维护者
- {{MAINTAINER_NAME}} ({{MAINTAINER_EMAIL}})
EOL为了更好地管理规则库,可以创建一些辅助工具:
# 创建规则目录生成器
cat > ~/cursor-rules-library/scripts/generate-rules-directory.sh << EOL
#!/bin/bash
# 生成规则目录结构
LIBRARY_DIR="$HOME/cursor-rules-library"
OUTPUT_FILE="$LIBRARY_DIR/rules-directory.md"
echo "# Cursor Rules 目录" > "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
echo "生成时间: $(date '+%Y-%m-%d %H:%M:%S')" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
# 遍历分类目录
for CATEGORY_DIR in "$LIBRARY_DIR/categories/*"; do
if [ -d "$CATEGORY_DIR" ]; then
CATEGORY=$(basename "$CATEGORY_DIR")
echo "## ${CATEGORY^}" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
# 查找该分类下的规则
for RULE_FILE in "$CATEGORY_DIR"/*.mdc; do
if [ -f "$RULE_FILE" ]; then
RULE_NAME=$(grep -m 1 "^name:" "$RULE_FILE" | sed 's/name: //')
RULE_DESCRIPTION=$(grep -m 1 "^description:" "$RULE_FILE" | sed 's/description: //')
echo "- **$RULE_NAME**: $RULE_DESCRIPTION" >> "$OUTPUT_FILE"
fi
done
echo "" >> "$OUTPUT_FILE"
fi
done
echo "规则目录已生成到: $OUTPUT_FILE"
EOL
# 添加执行权限
chmod +x ~/cursor-rules-library/scripts/generate-rules-directory.sh# 创建规则统计工具
cat > ~/cursor-rules-library/scripts/rules-stats.sh << EOL
#!/bin/bash
# 生成规则库统计信息
LIBRARY_DIR="$HOME/cursor-rules-library"
# 计算总规则数
TOTAL_RULES=$(find "$LIBRARY_DIR/categories" -name "*.mdc" | wc -l)
# 按分类统计
echo "按分类统计规则数量:"
for CATEGORY_DIR in "$LIBRARY_DIR/categories/*"; do
if [ -d "$CATEGORY_DIR" ]; then
CATEGORY=$(basename "$CATEGORY_DIR")
COUNT=$(find "$CATEGORY_DIR" -name "*.mdc" | wc -l)
echo "- $CATEGORY: $COUNT"
fi
done
# 按标签统计
echo -e "\n按标签统计规则数量:"
for TAG in $(jq -r '.tags | keys[]' "$LIBRARY_DIR/tags-index.json"); do
COUNT=$(jq -r ".tags.\"$TAG\" | length" "$LIBRARY_DIR/tags-index.json")
echo "- $TAG: $COUNT"
done
echo -e "\n总规则数: $TOTAL_RULES"
EOL
# 添加执行权限
chmod +x ~/cursor-rules-library/scripts/rules-stats.sh在下一部分,我们将探讨规则的版本控制和维护策略,帮助您管理规则库的生命周期。