psmgr 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/rules/changelog-rules.md +38 -0
- package/.agents/rules/code-standards-rules.md +74 -0
- package/.agents/rules/project-rules.md +126 -0
- package/.agents/rules/skill-lifecycle-rules.md +34 -0
- package/.agents/rules/skill-scheduling-rules.md +119 -0
- package/.agents/rules/templates/code-standards-go.md +14 -0
- package/.agents/rules/templates/code-standards-node.md +14 -0
- package/.agents/rules/templates/code-standards-python.md +15 -0
- package/.agents/rules/templates/code-standards-rust.md +14 -0
- package/.agents/rules/templates/project-rules-base.md +119 -0
- package/.agents/rules/version-management-rules.md +85 -0
- package/.agents/skills/INDEX.md +160 -0
- package/.agents/skills/generating-changelogs/SKILL.md +87 -0
- package/.agents/skills/installing-project-skills/SKILL.md +274 -0
- package/.agents/skills/managing-project-skills/SKILL.md +97 -0
- package/.agents/skills/scheduling-project-skills/SKILL.md +70 -0
- package/.agents/skills-config.template.json +21 -0
- package/.agents/skills-registry.json +172 -0
- package/.agents/tools.json +70 -0
- package/LICENSE +21 -0
- package/README.md +133 -0
- package/bin/psm.js +2004 -0
- package/package.json +50 -0
- package/scripts/bootstrap.js +145 -0
- package/scripts/bootstrap.sh +157 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 更新日志规则
|
|
2
|
+
|
|
3
|
+
> 按需加载 — 用户说"更新更新日志为 vx.x.x"时加载
|
|
4
|
+
|
|
5
|
+
## 流程
|
|
6
|
+
|
|
7
|
+
1. 获取上一个 tag 到最新提交的 commit
|
|
8
|
+
2. 按提交类型分类(feat/fix/docs/refactor/style/perf/config)
|
|
9
|
+
3. 按格式输出到 CHANGELOG.md
|
|
10
|
+
4. 更新所有版本号相关文件
|
|
11
|
+
|
|
12
|
+
## 分类标准
|
|
13
|
+
|
|
14
|
+
| 分类 | emoji | 关键词 |
|
|
15
|
+
|------|-------|--------|
|
|
16
|
+
| 新功能 | 🎉 新增 | feat:, feature, 新增, add |
|
|
17
|
+
| 体验优化 | ✨ 优化 | improve, optimize, enhance, perf |
|
|
18
|
+
| bug 修复 | 🔧 修复 | fix:, bug, patch, 修复 |
|
|
19
|
+
| 配置调整 | ⚡ 调整 | config, setting, param, env |
|
|
20
|
+
| 代码重构 | 🏗️ 重构 | refactor:, restructure, 重构 |
|
|
21
|
+
| 文档图表 | 📊 文档 | docs:, doc, readme, 文档 |
|
|
22
|
+
| 样式调整 | 🎨 样式 | style, css, ui, theme, 样式 |
|
|
23
|
+
|
|
24
|
+
## 输出格式
|
|
25
|
+
|
|
26
|
+
```markdown
|
|
27
|
+
## v{x.y.z} - {YYYY-MM-DD}
|
|
28
|
+
|
|
29
|
+
### 🎉 新增
|
|
30
|
+
- 功能点 1
|
|
31
|
+
|
|
32
|
+
### ✨ 优化
|
|
33
|
+
- 优化点 1
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## CHANGELOG.md
|
|
37
|
+
|
|
38
|
+
默认在项目根目录。已有则追加到最上方,没有则创建。
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<!-- psm:auto-generated version=1.0 -->
|
|
2
|
+
<!-- 本文件由 psm install 生成。安装时检测到 AGENTS.md/CLAUDE.md 有代码规范规则,会提取到此文件 -->
|
|
3
|
+
|
|
4
|
+
# 代码规范规则
|
|
5
|
+
|
|
6
|
+
> 按需加载 — 修改源代码时自动加载
|
|
7
|
+
> 关联区块:`.agents/rules/project-rules.md` 中的「代码规范」章节
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 🎯 触发条件
|
|
12
|
+
|
|
13
|
+
| 场景 | 触发动作 | 加载方式 |
|
|
14
|
+
|------|---------|---------|
|
|
15
|
+
| 修改任何源代码文件 | 自动应用本规则 | 全量加载 |
|
|
16
|
+
| 新增文件 | 检查是否符合项目编码风格 | 按需 |
|
|
17
|
+
| 提交前 | 检查是否符合提交规范 | 按需 |
|
|
18
|
+
| 用户说「代码风格」「格式」「lint」「规范」 | 加载完整代码规范 | 按需 |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 默认提交规范
|
|
23
|
+
|
|
24
|
+
> 使用 Conventional Commits 格式
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
<type>: <简短描述(中文,不超过50字)>
|
|
28
|
+
|
|
29
|
+
<详细描述(可选,中文)>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 提交类型
|
|
33
|
+
|
|
34
|
+
| 类型 | 用途 |
|
|
35
|
+
|------|------|
|
|
36
|
+
| `feat:` | 新功能 |
|
|
37
|
+
| `fix:` | Bug 修复 |
|
|
38
|
+
| `docs:` | 文档更新 |
|
|
39
|
+
| `refactor:` | 代码重构(不修 bug 不加功能) |
|
|
40
|
+
| `style:` | 样式/UI 调整 |
|
|
41
|
+
| `perf:` | 性能优化 |
|
|
42
|
+
| `test:` | 测试相关 |
|
|
43
|
+
| `chore:` | 构建/CI/配置 |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 默认编码规范
|
|
48
|
+
|
|
49
|
+
- 遵循项目已配置的 linter/formatter(ESLint / Prettier / Ruff / golangci-lint)
|
|
50
|
+
- 无 linter 时遵循:一致缩进、语义化命名、函数单一职责
|
|
51
|
+
- 用户输入必须校验(trim + sanitize + 参数化)
|
|
52
|
+
- 错误处理分三级:用户可见友好提示 / 控制台警告 / 静默容错
|
|
53
|
+
- 不硬编码密钥,通过环境变量注入
|
|
54
|
+
- 不输出未验证的 HTML/URL/脚本(XSS 防护)
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## ⚠️ 冲突处理
|
|
59
|
+
|
|
60
|
+
> 以下场景由 psm install 检测并交互处理
|
|
61
|
+
|
|
62
|
+
| 检测到的冲突 | 处理方式 |
|
|
63
|
+
|------------|---------|
|
|
64
|
+
| AGENTS.md 已有「代码规范」「编码规范」「Code Style」章节 | 询问:提取到本文件并替换为引用 / 保留原有 / 合并 |
|
|
65
|
+
| CLAUDE.md 已有「行为约束」「工具调用」等规则 | 询问:保留 / 合并到对应规则文件 |
|
|
66
|
+
| 项目已有 `.editorconfig` / `ESLint` / `Prettier` 配置 | 自动识别,不覆盖,在规范中引用"由工具强制执行" |
|
|
67
|
+
| 项目已有 Git commit template / commitlint | 引用已有工具,不覆盖 |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 📝 项目自定义
|
|
72
|
+
|
|
73
|
+
<!-- psm:project-custom -->
|
|
74
|
+
<!-- 安装后,项目专属的编码规范(如特定命名约定、架构模式)写在此处 -->
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<!-- psm:auto-generated version=1.0 -->
|
|
2
|
+
<!-- 本文件由 psm install 生成,非模板部分不会被覆盖 -->
|
|
3
|
+
|
|
4
|
+
# 项目通用规则
|
|
5
|
+
|
|
6
|
+
> 全量加载 — 每次对话开始时自动注入
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 📋 通用规范(适用于所有项目)
|
|
11
|
+
|
|
12
|
+
### 技能使用
|
|
13
|
+
|
|
14
|
+
- 优先使用 `.agents/skills/` 下的项目级技能
|
|
15
|
+
- 复杂任务先拆解再执行
|
|
16
|
+
- 多技能任务执行后必须汇总结果
|
|
17
|
+
|
|
18
|
+
### 提交消息
|
|
19
|
+
|
|
20
|
+
- 遵循 Conventional Commits 格式:`<type>: <简短描述>`
|
|
21
|
+
- 类型:`feat:` / `fix:` / `docs:` / `refactor:` / `style:` / `perf:` / `test:` / `chore:`
|
|
22
|
+
- 描述不超过 50 字,说明**做了什么**而非**为什么做**
|
|
23
|
+
|
|
24
|
+
### 架构约束
|
|
25
|
+
|
|
26
|
+
- 新增依赖前检查是否与现有技术栈兼容
|
|
27
|
+
- 不引入不必要的构建工具或框架
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## ⚡ 规则按需加载决策表(强制执行)
|
|
32
|
+
|
|
33
|
+
> 本表是"按需加载"的执行机制。**每次收到用户消息后,先匹配下表,再决定加载哪些规则文件。**
|
|
34
|
+
> 本文件始终全量加载,所以此决策表始终可见。
|
|
35
|
+
|
|
36
|
+
### 决策流程
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
收到用户消息
|
|
40
|
+
↓
|
|
41
|
+
匹配「触发条件」列 → 匹配 → 加载对应规则文件(按需)
|
|
42
|
+
↓ 不匹配
|
|
43
|
+
仅使用本文件(project-rules.md)执行任务
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 触发条件 → 规则加载映射
|
|
47
|
+
|
|
48
|
+
| 触发条件(用户说/场景) | 按需加载的规则文件 | 关联技能 |
|
|
49
|
+
|------------------------|-------------------|---------|
|
|
50
|
+
| "更新更新日志""发布新版本""打 tag""release""版本号" | `.agents/rules/version-management-rules.md` | `generating-changelogs` |
|
|
51
|
+
| "修改代码""新增""实现""写代码""编码" | `.agents/rules/code-standards-rules.md` | — |
|
|
52
|
+
| "安装技能""更新技能""卸载技能""查看技能" | `.agents/rules/skill-lifecycle-rules.md` | `installing-project-skills` |
|
|
53
|
+
| 技能执行时编排/调度任务 | `.agents/rules/skill-scheduling-rules.md` | `scheduling-project-skills` |
|
|
54
|
+
| "更新更新日志为 vx.x.x" | `.agents/rules/changelog-rules.md` | `generating-changelogs` |
|
|
55
|
+
| 未匹配以上任何条件 | 不额外加载,仅使用本文件 | — |
|
|
56
|
+
|
|
57
|
+
### 加载方式说明
|
|
58
|
+
|
|
59
|
+
| 加载方式 | 含义 | 文件 |
|
|
60
|
+
|---------|------|------|
|
|
61
|
+
| **全量加载** | 每次对话开始时自动注入上下文 | `project-rules.md`(本文件) |
|
|
62
|
+
| **按需加载** | 匹配左侧触发条件时加载,否则不加载 | `version-management-rules.md`, `code-standards-rules.md`, `skill-lifecycle-rules.md`, `skill-scheduling-rules.md`, `changelog-rules.md` |
|
|
63
|
+
|
|
64
|
+
> **注意:** 按需加载的文件存放在 `.agents/rules/` 目录。Agent 在匹配触发条件后,应主动读取对应规则文件的内容并应用到当前任务。
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 🔧 代码规范(项目专属)
|
|
69
|
+
|
|
70
|
+
> 触发条件:修改源代码时自动应用。以下为 psm 默认规范,安装时检测到项目已有规范则会询问是否替换。
|
|
71
|
+
|
|
72
|
+
<!-- psm:code-standards-placeholder -->
|
|
73
|
+
<!-- 安装时如检测到同名规则,注入引用到此处 -->
|
|
74
|
+
|
|
75
|
+
- 遵循项目已有代码风格(由 linters/formatters 强制执行)
|
|
76
|
+
- 优先使用 ES6+ 语法(如项目支持)
|
|
77
|
+
- 错误处理分级:用户可见错误 / 控制台日志 / 静默容错
|
|
78
|
+
- 用户输入必须校验(trim + encodeURIComponent / 参数化查询)
|
|
79
|
+
- 不硬编码密钥,通过环境变量注入
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 📦 版本管理规则
|
|
84
|
+
|
|
85
|
+
> 触发条件:用户说「更新更新日志为 vx.x.x」「发布新版本」「打 tag」时加载
|
|
86
|
+
> 关联技能:`generating-changelogs`
|
|
87
|
+
|
|
88
|
+
<!-- psm:version-management-placeholder -->
|
|
89
|
+
<!-- 安装时如检测到 AGENTS.md/CLAUDE.md 中有版本管理/CHANGELOG 规则,提取到此文件 -->
|
|
90
|
+
|
|
91
|
+
版本管理详细流程见 `.agents/rules/version-management-rules.md`(按需加载)
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 🎯 任务前置分类铁律(强制执行)
|
|
96
|
+
|
|
97
|
+
> 每次收到改动请求后,在写任何代码之前,必须执行以下步骤
|
|
98
|
+
|
|
99
|
+
### 第 0 步:加载规则文件
|
|
100
|
+
|
|
101
|
+
- 本文件由 AGENTS.md 引用的技能树入口加载(全量加载)
|
|
102
|
+
- 技能树导航见 `.agents/skills/INDEX.md`(优先读取,了解技能层级关系)
|
|
103
|
+
- 如需技能调度细则,加载 `.agents/rules/skill-scheduling-rules.md`
|
|
104
|
+
### 第一步:任务分类
|
|
105
|
+
|
|
106
|
+
| 类别 | 判定标准 | 触发条件 |
|
|
107
|
+
|------|---------|---------|
|
|
108
|
+
| 🎨 UI/设计 | 修改外观、布局、样式、新建界面 | 用户描述涉及视觉/布局 |
|
|
109
|
+
| 🔧 Bug 修复 | 排查报错、异常行为、逻辑错误 | 用户说"报错""bug""不工作" |
|
|
110
|
+
| 🏗️ 新功能/复杂改动 | 新增模块、跨文件改动、架构调整 | 用户说"实现""添加""新增" |
|
|
111
|
+
| 🧹 代码改进 | 重构、简化、去冗余、性能优化 | 用户说"优化""重构""清理" |
|
|
112
|
+
| ✏️ 简单改动 | ≤10行、文案/配置/单文件样式微调 | 明显是微小改动 |
|
|
113
|
+
|
|
114
|
+
### 第二步:调用对应的技能入口(按技能树分派)
|
|
115
|
+
|
|
116
|
+
> 完整技能树见 `.agents/skills/INDEX.md`。先匹配 L1 类别,再由 L2 技能执行。
|
|
117
|
+
|
|
118
|
+
| 类别 | L1 树类别 | 分派说明 |
|
|
119
|
+
|------|-----------|---------|
|
|
120
|
+
| 🎨 UI/设计 | 🎨 设计技能(安装 psm-taste 后可用) | 调用 `frontend-design` 或 `redesign-existing-projects` |
|
|
121
|
+
| 🔧 Bug 修复 | — | 不调用技能树,直接加载 `systematic-debugging` |
|
|
122
|
+
| 🏗️ 新功能/复杂改动 | — | 不调用技能树,直接加载 `brainstorming` 或 `writing-plans` |
|
|
123
|
+
| 🧹 代码改进 | 📋 任务调度 | 加载 `scheduling-project-skills` 进行编排 |
|
|
124
|
+
| ✏️ 简单改动 | — | 直接执行,不调用技能
|
|
125
|
+
> 如果任务跨多个类别,按最高优先级执行(UI/设计 > Bug修复 > 新功能 > 代码改进 > 简单改动)
|
|
126
|
+
> 技能调用后,按技能返回的指导执行。不得以"跳过"或"太简单"为由绕过分类步骤。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 技能生命周期规则
|
|
2
|
+
|
|
3
|
+
> 按需加载 — 仅在用户说"安装/更新/升级/卸载/查看技能和规则"时加载
|
|
4
|
+
|
|
5
|
+
## 安装流程
|
|
6
|
+
|
|
7
|
+
见 [installing-project-skills] 技能文件,按以下阶段执行:
|
|
8
|
+
1. 检测项目信息(读取依赖文件确定技术栈)
|
|
9
|
+
2. 扫描现有技能(搜索所有 SKILL.md)
|
|
10
|
+
3. 整合上游仓库(ECC、GitNexus、codegraph、superpowers、karpathy)
|
|
11
|
+
4. 技术栈适配筛选
|
|
12
|
+
5. 冲突处理
|
|
13
|
+
6. 安装与迁移
|
|
14
|
+
7. 清理旧目录
|
|
15
|
+
8. MCP→CLI 改造
|
|
16
|
+
9. 生成 INDEX.md
|
|
17
|
+
|
|
18
|
+
## 升级流程
|
|
19
|
+
|
|
20
|
+
1. 对比已安装版本与上游仓库最新版本
|
|
21
|
+
2. 识别新增适用技能
|
|
22
|
+
3. 下载更新,合并自定义规则(不覆盖用户定制)
|
|
23
|
+
4. 更新 INDEX.md,清理过期条目
|
|
24
|
+
|
|
25
|
+
## 卸载流程
|
|
26
|
+
|
|
27
|
+
1. 确认技能名称
|
|
28
|
+
2. 从 `.agents/skills/<name>/` 删除
|
|
29
|
+
3. 从 INDEX.md 移除记录
|
|
30
|
+
4. 检查规则引用,询问是否清理
|
|
31
|
+
|
|
32
|
+
## 状态检查
|
|
33
|
+
|
|
34
|
+
列出 `.agents/skills/` 下所有技能,显示版本/来源/更新时间,检查依赖工具是否安装,报告未迁移技能。
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<!-- psm:auto-generated version=1.0 -->
|
|
2
|
+
<!-- 本文件由 psm install 生成 -->
|
|
3
|
+
|
|
4
|
+
# 技能调度规则
|
|
5
|
+
|
|
6
|
+
> 按需加载 — 技能执行任务时加载
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 调度原则
|
|
11
|
+
|
|
12
|
+
1. **项目内技能优先:** 先使用 `.agents/skills/` 下的技能,再考虑全局技能
|
|
13
|
+
2. **按需加载:** 仅加载当前任务相关的技能
|
|
14
|
+
3. **单一职责:** 每个技能只执行单一任务
|
|
15
|
+
4. **串行优先:** 同类型任务串行执行
|
|
16
|
+
5. **Brainstorming 优先(如有):** L3/L4 复杂任务先调 brainstorming 分析拆解
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 🎯 触发条件矩阵
|
|
21
|
+
|
|
22
|
+
| # | 场景 | 用户触发词 | 调用链 | 说明 |
|
|
23
|
+
|---|------|-----------|--------|------|
|
|
24
|
+
| 1 | 新功能开发 | "实现""添加""新增功能" | `brainstorming` → `writing-plans` → `codegraph/gitnexus` → `tdd` → 验证 | 从设计到实现 |
|
|
25
|
+
| 2 | Bug 修复 | "报错""bug""不工作""出错" | `systematic-debugging` → `test-driven-development` → 验证 | 先诊断再修复 |
|
|
26
|
+
| 3 | 代码重构 | "重构""优化代码""重写" | `codegraph/gitnexus`(影响分析) → `writing-plans` → `tdd` → 验证 | 改前分析影响范围 |
|
|
27
|
+
| 4 | 代码审查 | "审查""review""检查代码" | `codegraph/gitnexus` → `requesting-code-review` → 验证 | 分析变更影响 |
|
|
28
|
+
| 5 | 安全审查 | "安全审查""安全检查""security" | `codegraph impact` → `security-review` → 验证 | ECC 安全协议 |
|
|
29
|
+
| 6 | 技术调研 | "调研""怎么看""查一下" | `search-first` → `writing-plans` → 编码 | 先找现成方案 |
|
|
30
|
+
| 7 | UI/UX 设计 | "设计""改界面""新页面" | `brainstorming` → 设计技能 → 实现 → 验证 | 参考设计技能选择指南 |
|
|
31
|
+
| 8 | E2E 验证 | "验证""测试流程""e2e" | `e2e-testing` → `verification-before-completion` | 核心链路验证 |
|
|
32
|
+
| 9 | 性能优化 | "性能""优化""太慢" | `web-perf` → `codegraph/gitnexus` → `writing-plans` → 验证 | 先测量再优化 |
|
|
33
|
+
| 10 | API/外部集成 | "接入""API""集成" | `search-first` → `codegraph` → `tdd`(mock) → 验证 | 调研→实现 |
|
|
34
|
+
| 11 | 版本发布 | "发布""新版本""更新日志" | `generating-changelogs` → 版本号更新 → git tag | 加载 version-management-rules.md |
|
|
35
|
+
| 12 | 技能管理 | "安装技能""更新技能""卸载" | `managing-project-skills` → 对应子技能 | 加载 skill-lifecycle-rules.md |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 难度分级
|
|
40
|
+
|
|
41
|
+
| 级别 | 最大并行 | 典型任务 |
|
|
42
|
+
|------|---------|---------|
|
|
43
|
+
| L1 | 1 | 翻译、格式化、简单修复 |
|
|
44
|
+
| L2 | 2 | 功能实现、单元测试 |
|
|
45
|
+
| L3 | 3 | 架构设计、多模块协调 |
|
|
46
|
+
| L4 | 5 | 性能优化、安全审计、深度重构 |
|
|
47
|
+
|
|
48
|
+
## 任务难度判断
|
|
49
|
+
|
|
50
|
+
根据任务复杂度选择不同的技能组合:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
任务开始
|
|
54
|
+
↓
|
|
55
|
+
判断难度
|
|
56
|
+
├─ 简单(单步操作)
|
|
57
|
+
│ 直接执行 + 代码规范规则
|
|
58
|
+
│
|
|
59
|
+
├─ 中等(2-5 步)
|
|
60
|
+
│ writing-plans → 编码 + test-driven-development → 验证
|
|
61
|
+
│ ↓
|
|
62
|
+
│ 遇到问题 → systematic-debugging
|
|
63
|
+
│
|
|
64
|
+
└─ 复杂(多模块/跨文件)
|
|
65
|
+
brainstorming → writing-plans → codegraph/gitnexus
|
|
66
|
+
→ test-driven-development → 验证
|
|
67
|
+
↓
|
|
68
|
+
遇到问题 → systematic-debugging
|
|
69
|
+
↓
|
|
70
|
+
完成任务
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
| 难度 | 判断标准 | 示例 |
|
|
74
|
+
|------|---------|------|
|
|
75
|
+
| **简单** | 单文件改动 ≤ 20 行,无逻辑分支 | 文案修改、样式调整、配置更新 |
|
|
76
|
+
| **中等** | 2-5 步操作,涉及单模块 | 添加一个搜索过滤条件、修改行为 |
|
|
77
|
+
| **复杂** | 多模块跨文件,需设计方案 | 新增搜索源、重构核心模块、性能优化 |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 技能选择优先级
|
|
82
|
+
|
|
83
|
+
项目内 > 专用技能 > 高版本 > CLI 优先于 MCP
|
|
84
|
+
|
|
85
|
+
## 编排模式
|
|
86
|
+
|
|
87
|
+
| 复杂度 | 方式 |
|
|
88
|
+
|--------|------|
|
|
89
|
+
| L1 | 单一技能直接执行 |
|
|
90
|
+
| L2 | 主技能 + 辅助技能串行 |
|
|
91
|
+
| L3 | 多技能并行 + 结果汇总 |
|
|
92
|
+
| L4 | 多 Agent 协作 + 交叉验证 |
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 并行执行原则
|
|
97
|
+
|
|
98
|
+
对于独立操作,优先使用并行调度:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
✅ 正确:并行执行
|
|
102
|
+
Agent 1:codegraph 影响分析
|
|
103
|
+
Agent 2:search-first 技术调研
|
|
104
|
+
Agent 3:e2e-testing 跑回归
|
|
105
|
+
|
|
106
|
+
❌ 错误:不必要的串行
|
|
107
|
+
先 Agent 1、再 Agent 2、再 Agent 3
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 开发工作流
|
|
113
|
+
|
|
114
|
+
1. **规划** → `brainstorming` 或 `writing-plans`
|
|
115
|
+
2. **开发** → `tdd` 或直接编码(简单任务)
|
|
116
|
+
3. **审查** → `codegraph/gitnexus` + `requesting-code-review`
|
|
117
|
+
4. **安全** → `security-review`(涉及输入/API时)
|
|
118
|
+
5. **验证** → `verification-before-completion`
|
|
119
|
+
6. **提交** → 提交规范(加载 code-standards-rules.md)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- psm:tech-stack-rules -->
|
|
2
|
+
<!-- 由 psm install 根据项目技术栈自动生成 -->
|
|
3
|
+
|
|
4
|
+
### Go 规范
|
|
5
|
+
|
|
6
|
+
- 代码风格由 `gofmt` / `go vet` 强制执行,无需额外配置
|
|
7
|
+
- 错误处理:始终显式检查 `err != nil`,避免忽略错误
|
|
8
|
+
- 使用 `errors.Is()` / `errors.As()` 进行错误链比较
|
|
9
|
+
- 接口设计:小接口(≤3 方法),接受接口返回结构体
|
|
10
|
+
- 并发:使用 `sync.WaitGroup` / `errgroup` 管理 goroutine,避免泄露
|
|
11
|
+
- 测试:标准 `testing` 包,使用 `testify/assert` 辅助断言
|
|
12
|
+
- 依赖管理:使用 Go modules,定期 `go mod tidy`
|
|
13
|
+
- 上下文(context):所有阻塞/网络操作接受 `context.Context` 作为第一个参数
|
|
14
|
+
- 日志:使用结构化日志(`slog` / `zerolog` / `zap`),避免 `fmt.Println`
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- psm:tech-stack-rules -->
|
|
2
|
+
<!-- 由 psm install 根据项目技术栈自动生成 -->
|
|
3
|
+
|
|
4
|
+
### Node.js / TypeScript 规范
|
|
5
|
+
|
|
6
|
+
- 使用 ES6+ 语法:`async/await`、解构赋值、可选链、空值合并
|
|
7
|
+
- TypeScript 项目启用 `strict` 模式
|
|
8
|
+
- 优先使用 `import/export`(ESM),避免 `require`
|
|
9
|
+
- 错误处理:使用 `try/catch` 或 `Result` 模式,避免回调地狱
|
|
10
|
+
- 异步操作优先使用 `Promise.all` / `Promise.allSettled` 并行化
|
|
11
|
+
- 路径别名:使用模块别名而非深层相对路径(`@/` 代替 `../../../`)
|
|
12
|
+
- 测试框架:Jest / Vitest,测试文件与源码同目录(`*.test.ts`)
|
|
13
|
+
- 代码风格由 ESLint + Prettier 强制执行
|
|
14
|
+
- 依赖管理:定期运行 `npm audit`,避免引入冗余依赖
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- psm:tech-stack-rules -->
|
|
2
|
+
<!-- 由 psm install 根据项目技术栈自动生成 -->
|
|
3
|
+
|
|
4
|
+
### Python 规范
|
|
5
|
+
|
|
6
|
+
- 遵循 PEP 8 编码风格(行长度 88 字符,Black 格式化)
|
|
7
|
+
- 所有函数和类必须包含类型注解(PEP 484)
|
|
8
|
+
- 使用 `pathlib` 替代 `os.path` 处理路径
|
|
9
|
+
- 错误处理:使用特定异常类,避免裸 `except:`
|
|
10
|
+
- 异步代码使用 `asyncio` / `anyio`,避免 `sync_to_async` 包装
|
|
11
|
+
- 导入顺序:标准库 → 第三方 → 本地模块(isort 分组)
|
|
12
|
+
- 测试框架:pytest,测试覆盖率 ≥ 80%
|
|
13
|
+
- 代码风格由 Black + Ruff 强制执行
|
|
14
|
+
- 依赖管理:使用 `pyproject.toml`,定期 `pip audit`
|
|
15
|
+
- 类型检查:使用 `mypy` 或 `pyright` 严格模式
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- psm:tech-stack-rules -->
|
|
2
|
+
<!-- 由 psm install 根据项目技术栈自动生成 -->
|
|
3
|
+
|
|
4
|
+
### Rust 规范
|
|
5
|
+
|
|
6
|
+
- 代码风格由 `rustfmt` + `clippy` 强制执行
|
|
7
|
+
- 所有公有项(`pub`)必须包含文档注释(`///` 或 `//!`)
|
|
8
|
+
- 错误处理:使用 `Result<T, E>` 和 `?` 运算符,避免 `unwrap()` / `expect()`(除非有明确理由)
|
|
9
|
+
- 所有权:优先使用引用 `&T` 而非克隆,善用借用检查器
|
|
10
|
+
- 并发:使用 `Send + Sync` trait 边界,优先选用 `tokio` 或 `async-std`
|
|
11
|
+
- 测试:单元测试放在模块内(`#[cfg(test)]`),集成测试放在 `tests/` 目录
|
|
12
|
+
- 依赖管理:`cargo deny` / `cargo audit` 定期检查安全漏洞
|
|
13
|
+
- 特性门控:可选功能使用 feature flags,避免条件编译扩散
|
|
14
|
+
- 使用 `thiserror` 和 `anyhow` 做分层错误处理
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<!-- psm:auto-generated version=1.0 -->
|
|
2
|
+
<!-- 本文件由 psm install 根据项目技术栈动态生成,非模板部分不会被覆盖 -->
|
|
3
|
+
|
|
4
|
+
# 项目通用规则
|
|
5
|
+
|
|
6
|
+
> 全量加载 — 每次对话开始时自动注入
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 📋 通用规范(适用于所有项目)
|
|
11
|
+
|
|
12
|
+
### 技能使用
|
|
13
|
+
|
|
14
|
+
- 优先使用 `.agents/skills/` 下的项目级技能
|
|
15
|
+
- 复杂任务先拆解再执行
|
|
16
|
+
- 多技能任务执行后必须汇总结果
|
|
17
|
+
|
|
18
|
+
### 提交消息
|
|
19
|
+
|
|
20
|
+
- 遵循 Conventional Commits 格式:`<type>: <简短描述>`
|
|
21
|
+
- 类型:`feat:` / `fix:` / `docs:` / `refactor:` / `style:` / `perf:` / `test:` / `chore:`
|
|
22
|
+
- 描述不超过 50 字,说明**做了什么**而非**为什么做**
|
|
23
|
+
|
|
24
|
+
### 架构约束
|
|
25
|
+
|
|
26
|
+
- 新增依赖前检查是否与现有技术栈兼容
|
|
27
|
+
- 不引入不必要的构建工具或框架
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## ⚡ 规则按需加载决策表(强制执行)
|
|
32
|
+
|
|
33
|
+
> 本表是"按需加载"的执行机制。**每次收到用户消息后,先匹配下表,再决定加载哪些规则文件。**
|
|
34
|
+
> 本文件始终全量加载,所以此决策表始终可见。
|
|
35
|
+
|
|
36
|
+
### 决策流程
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
收到用户消息
|
|
40
|
+
↓
|
|
41
|
+
匹配「触发条件」列 → 匹配 → 加载对应规则文件(按需)
|
|
42
|
+
↓ 不匹配
|
|
43
|
+
仅使用本文件(project-rules.md)执行任务
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 触发条件 → 规则加载映射
|
|
47
|
+
|
|
48
|
+
| 触发条件(用户说/场景) | 按需加载的规则文件 | 关联技能 |
|
|
49
|
+
|------------------------|-------------------|---------|
|
|
50
|
+
| "更新更新日志""发布新版本""打 tag""release""版本号" | `.agents/rules/version-management-rules.md` | `generating-changelogs` |
|
|
51
|
+
| "修改代码""新增""实现""写代码""编码" | `.agents/rules/code-standards-rules.md` | — |
|
|
52
|
+
| "安装技能""更新技能""卸载技能""查看技能" | `.agents/rules/skill-lifecycle-rules.md` | `installing-project-skills` |
|
|
53
|
+
| 技能执行时编排/调度任务 | `.agents/rules/skill-scheduling-rules.md` | `scheduling-project-skills` |
|
|
54
|
+
| "更新更新日志为 vx.x.x" | `.agents/rules/changelog-rules.md` | `generating-changelogs` |
|
|
55
|
+
| 未匹配以上任何条件 | 不额外加载,仅使用本文件 | — |
|
|
56
|
+
|
|
57
|
+
### 加载方式说明
|
|
58
|
+
|
|
59
|
+
| 加载方式 | 含义 | 文件 |
|
|
60
|
+
|---------|------|------|
|
|
61
|
+
| **全量加载** | 每次对话开始时自动注入上下文 | `project-rules.md`(本文件) |
|
|
62
|
+
| **按需加载** | 匹配左侧触发条件时加载,否则不加载 | `version-management-rules.md`, `code-standards-rules.md`, `skill-lifecycle-rules.md`, `skill-scheduling-rules.md`, `changelog-rules.md` |
|
|
63
|
+
|
|
64
|
+
> **注意:** 按需加载的文件存放在 `.agents/rules/` 目录。Agent 在匹配触发条件后,应主动读取对应规则文件的内容并应用到当前任务。
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 🔧 代码规范(项目专属)
|
|
69
|
+
|
|
70
|
+
> 触发条件:修改源代码时自动应用。
|
|
71
|
+
|
|
72
|
+
<!-- psm:code-standards -->
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 📦 版本管理规则
|
|
77
|
+
|
|
78
|
+
> 触发条件:用户说「更新更新日志为 vx.x.x」「发布新版本」「打 tag」时加载
|
|
79
|
+
> 关联技能:`generating-changelogs`
|
|
80
|
+
|
|
81
|
+
<!-- psm:version-management-placeholder -->
|
|
82
|
+
<!-- 安装时如检测到 AGENTS.md/CLAUDE.md 中有版本管理/CHANGELOG 规则,提取到此文件 -->
|
|
83
|
+
|
|
84
|
+
版本管理详细流程见 `.agents/rules/version-management-rules.md`(按需加载)
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 🎯 任务前置分类铁律(强制执行)
|
|
89
|
+
|
|
90
|
+
> 每次收到改动请求后,在写任何代码之前,必须执行以下步骤
|
|
91
|
+
|
|
92
|
+
### 第 0 步:加载规则文件
|
|
93
|
+
|
|
94
|
+
- 本文件由 AGENTS.md 引用的技能树入口加载(全量加载)
|
|
95
|
+
- 技能树导航见 `.agents/skills/INDEX.md`(优先读取,了解技能层级关系)
|
|
96
|
+
- 如需技能调度细则,加载 `.agents/rules/skill-scheduling-rules.md`
|
|
97
|
+
### 第一步:任务分类
|
|
98
|
+
|
|
99
|
+
| 类别 | 判定标准 | 触发条件 |
|
|
100
|
+
|------|---------|---------|
|
|
101
|
+
| 🎨 UI/设计 | 修改外观、布局、样式、新建界面 | 用户描述涉及视觉/布局 |
|
|
102
|
+
| 🔧 Bug 修复 | 排查报错、异常行为、逻辑错误 | 用户说"报错""bug""不工作" |
|
|
103
|
+
| 🏗️ 新功能/复杂改动 | 新增模块、跨文件改动、架构调整 | 用户说"实现""添加""新增" |
|
|
104
|
+
| 🧹 代码改进 | 重构、简化、去冗余、性能优化 | 用户说"优化""重构""清理" |
|
|
105
|
+
| ✏️ 简单改动 | ≤10行、文案/配置/单文件样式微调 | 明显是微小改动 |
|
|
106
|
+
|
|
107
|
+
### 第二步:调用对应的技能入口(按技能树分派)
|
|
108
|
+
|
|
109
|
+
> 完整技能树见 `.agents/skills/INDEX.md`。先匹配 L1 类别,再由 L2 技能执行。
|
|
110
|
+
|
|
111
|
+
| 类别 | L1 树类别 | 分派说明 |
|
|
112
|
+
|------|-----------|---------|
|
|
113
|
+
| 🎨 UI/设计 | 🎨 设计技能(安装 psm-taste 后可用) | 调用 `frontend-design` 或 `redesign-existing-projects` |
|
|
114
|
+
| 🔧 Bug 修复 | — | 不调用技能树,直接加载 `systematic-debugging` |
|
|
115
|
+
| 🏗️ 新功能/复杂改动 | — | 不调用技能树,直接加载 `brainstorming` 或 `writing-plans` |
|
|
116
|
+
| 🧹 代码改进 | 📋 任务调度 | 加载 `scheduling-project-skills` 进行编排 |
|
|
117
|
+
| ✏️ 简单改动 | — | 直接执行,不调用技能
|
|
118
|
+
> 如果任务跨多个类别,按最高优先级执行(UI/设计 > Bug修复 > 新功能 > 代码改进 > 简单改动)
|
|
119
|
+
> 技能调用后,按技能返回的指导执行。不得以"跳过"或"太简单"为由绕过分类步骤。
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<!-- psm:auto-generated version=1.0 -->
|
|
2
|
+
<!-- 本文件由 psm install 生成。安装时如检测到 AGENTS.md/CLAUDE.md 有版本管理规则,会提取到此文件 -->
|
|
3
|
+
|
|
4
|
+
# 版本管理规则
|
|
5
|
+
|
|
6
|
+
> 按需加载 — 用户说「更新更新日志为 vx.x.x」「发布新版本」「打 tag」时加载
|
|
7
|
+
> 关联技能:`generating-changelogs`
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 概述
|
|
12
|
+
|
|
13
|
+
本规则定义了项目的版本更新流程,包括 CHANGELOG 生成、版本号更新和发布流程。
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 🎯 触发条件
|
|
18
|
+
|
|
19
|
+
| 用户指令 | 触发动作 | 加载的规则/技能 |
|
|
20
|
+
|---------|---------|---------------|
|
|
21
|
+
| 「更新更新日志为 vx.x.x」 | 加载本文件 + 调用 `generating-changelogs` | 全量 |
|
|
22
|
+
| 「发布新版本」「打 tag」「release」 | 版本号更新 + CHANGELOG + git tag | 按需 |
|
|
23
|
+
| 「查看版本历史」「changelog」 | 读取 CHANGELOG.md | 按需 |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 🔄 默认流程(由 generating-changelogs 技能执行)
|
|
28
|
+
|
|
29
|
+
### 1. 收集提交
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
git describe --tags --abbrev=0 # 获取上一个 tag
|
|
33
|
+
git log <last-tag>..HEAD --oneline # 获取期间提交
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 2. 按类型分类
|
|
37
|
+
|
|
38
|
+
| 分类 | emoji | 关键词 |
|
|
39
|
+
|------|-------|--------|
|
|
40
|
+
| 新功能 | 🎉 新增 | feat:, feature, 新增, add |
|
|
41
|
+
| 体验优化 | ✨ 优化 | improve, optimize, enhance, perf |
|
|
42
|
+
| Bug 修复 | 🔧 修复 | fix:, bug, patch, 修复 |
|
|
43
|
+
| 配置调整 | ⚡ 调整 | config, setting, param, env |
|
|
44
|
+
| 代码重构 | 🏗️ 重构 | refactor:, restructure, 重构 |
|
|
45
|
+
| 文档图表 | 📊 文档 | docs:, doc, readme, 文档 |
|
|
46
|
+
| 样式调整 | 🎨 样式 | style, css, ui, theme, 样式 |
|
|
47
|
+
|
|
48
|
+
### 3. 输出格式
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
## v{x.y.z} - {YYYY-MM-DD}
|
|
52
|
+
|
|
53
|
+
### 🎉 新增
|
|
54
|
+
- 功能点 1
|
|
55
|
+
|
|
56
|
+
### ✨ 优化
|
|
57
|
+
- 优化点 1
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 4. 版本号更新
|
|
61
|
+
|
|
62
|
+
更新 `package.json`、`pyproject.toml`、`VERSION` 等文件中的版本号。
|
|
63
|
+
|
|
64
|
+
### 5. CHANGELOG.md
|
|
65
|
+
|
|
66
|
+
默认在项目根目录。已有则追加到最上方,没有则创建。
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## ⚠️ 冲突处理
|
|
71
|
+
|
|
72
|
+
> 以下场景由 psm install 检测并交互处理
|
|
73
|
+
|
|
74
|
+
| 检测到的冲突 | 处理方式 |
|
|
75
|
+
|------------|---------|
|
|
76
|
+
| AGENTS.md 已有版本管理章节("版本管理规则""版本更新""Versioning") | 询问:提取到本文件并替换为引用 / 保留原有 / 合并 |
|
|
77
|
+
| CHANGELOG.md 已有不同格式 | 询问:使用 psm 格式 / 保留现有格式 |
|
|
78
|
+
| 项目已有 `npm version` / `standard-version` 等工具 | 询问:集成到流程 / 跳过 |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 📝 项目自定义
|
|
83
|
+
|
|
84
|
+
<!-- psm:project-custom -->
|
|
85
|
+
<!-- 安装后,项目专属的版本管理规则(如特殊版本号格式、发布流程)写在此处 -->
|