jarvis-agent-factory 3.47.2 → 3.47.3
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/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Jarvis Agent Factory · 贾维斯智能体工厂
|
|
2
2
|
|
|
3
3
|
[](./LICENSE)
|
|
4
|
-
[](https://github.com/Wjl1224734792/Jarvis-Agent-Factory/releases)
|
|
5
5
|
[](https://www.npmjs.com/package/jarvis-agent-factory)
|
|
6
6
|
[](https://github.com/Wjl1224734792/visual-primitives-mcp)
|
|
7
7
|
<br>💡 **纯文本模型(如 DeepSeek)主力用户** → 搭配 [Visual Primitives MCP](https://github.com/Wjl1224734792/visual-primitives-mcp) 获得视觉理解能力
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: 一键发布——环境检测→质量门→测试→版本bump→commit→push→PR→合并→tag→发布
|
|
3
3
|
argument-hint: [版本类型:patch|minor|major,默认patch]
|
|
4
|
-
version: "3.
|
|
4
|
+
version: "3.47.2"
|
|
5
5
|
updated: "2026-05-14"
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -9,115 +9,237 @@ updated: "2026-05-14"
|
|
|
9
9
|
|
|
10
10
|
立即执行以下初始化步骤:
|
|
11
11
|
|
|
12
|
-
## 步骤 0:加载技能 +
|
|
12
|
+
## 步骤 0:加载技能 + 环境检测
|
|
13
13
|
|
|
14
14
|
```
|
|
15
15
|
Skill("code-quality-gate")
|
|
16
16
|
Skill("git-workflow-and-versioning")
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
### 0.1 检测默认分支
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
```bash
|
|
22
|
+
git remote show origin | grep "HEAD branch" | awk '{print $NF}'
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
默认分支通常为 `main` 或 `master`。记作 `<DEFAULT>`。
|
|
26
|
+
|
|
27
|
+
若 `git remote show origin` 失败(无远程仓库),报告用户先配置远程仓库。
|
|
28
|
+
|
|
29
|
+
### 0.2 检测工作分支
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
git branch --show-current
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
当前分支记作 `<CURRENT>`。
|
|
36
|
+
|
|
37
|
+
- **若 `<CURRENT>` != `<DEFAULT>`**:将 `<CURRENT>` 作为工作分支使用,记作 `<WORK>`。
|
|
38
|
+
- **若 `<CURRENT>` == `<DEFAULT>`**:提示用户确认工作分支名称(建议用 `dev`),然后执行:
|
|
39
|
+
```bash
|
|
40
|
+
git checkout -b dev
|
|
41
|
+
```
|
|
42
|
+
若 `dev` 已存在(本地或远程),改为 `git checkout dev && git pull origin dev`。
|
|
43
|
+
若用户指定了其他名称,使用用户指定的名称。记作 `<WORK>`。
|
|
44
|
+
|
|
45
|
+
### 0.3 检测包管理器
|
|
46
|
+
|
|
47
|
+
按优先级检测锁文件,优先使用已有锁文件的包管理器:
|
|
48
|
+
|
|
49
|
+
| 锁文件 | 包管理器 | 运行脚本命令前缀 |
|
|
50
|
+
|--------|---------|-----------------|
|
|
51
|
+
| `package-lock.json` | npm | `npm run` |
|
|
52
|
+
| `yarn.lock` | yarn | `yarn` |
|
|
53
|
+
| `pnpm-lock.yaml` | pnpm | `pnpm` |
|
|
54
|
+
|
|
55
|
+
若无任何锁文件,默认使用 `npm`。对应的前缀记作 `<PKG>`。以下各步骤中的脚本调用统一为 `<PKG> <script>` 格式。审计命令为 `<PKG> audit`。
|
|
26
56
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
57
|
+
### 0.4 检测版本文件
|
|
58
|
+
|
|
59
|
+
按优先级检测版本声明文件:
|
|
60
|
+
|
|
61
|
+
| 文件 | 项目类型 | 版本字段 |
|
|
62
|
+
|------|---------|---------|
|
|
63
|
+
| `package.json` | JS/TS | `version` |
|
|
64
|
+
| `pyproject.toml` | Python | `[project] version` 或 `[tool.poetry] version` |
|
|
65
|
+
| `Cargo.toml` | Rust | `[package] version` |
|
|
66
|
+
|
|
67
|
+
若多个文件同时存在,优先使用 `package.json`。检测到的文件记作 `<VERSION_FILE>`,当前版本记作 `<CUR_VER>`。
|
|
68
|
+
|
|
69
|
+
### 0.5 检测测试命令
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# 若 package.json 存在且含 test 脚本
|
|
73
|
+
<PKG> test -- --listTests 2>/dev/null; echo "found"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
若检测到 `scripts.test` 则使用 `<PKG> test`,否则按以下优先级查找:
|
|
77
|
+
- `Makefile` 中的 `test` 目标
|
|
78
|
+
- `pytest`(Python)
|
|
79
|
+
- `cargo test`(Rust)
|
|
80
|
+
- `go test ./...`(Go)
|
|
81
|
+
|
|
82
|
+
若无法自动检测,提示用户指定测试命令。
|
|
83
|
+
|
|
84
|
+
### 0.6 汇总检测结果
|
|
85
|
+
|
|
86
|
+
向用户展示并确认:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
=== 环境检测结果 ===
|
|
90
|
+
默认分支: <DEFAULT>
|
|
91
|
+
工作分支: <WORK>
|
|
92
|
+
包管理器: <npm|yarn|pnpm>
|
|
93
|
+
版本文件: <VERSION_FILE>
|
|
94
|
+
当前版本: <CUR_VER>
|
|
95
|
+
测试命令: <TEST_CMD>
|
|
96
|
+
===================
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 步骤 1:前置检查(不可绕过)
|
|
102
|
+
|
|
103
|
+
1. **工作区干净**:
|
|
104
|
+
```bash
|
|
105
|
+
git status --porcelain
|
|
106
|
+
```
|
|
107
|
+
若有未提交变更,列出文件并提示用户处理。
|
|
108
|
+
|
|
109
|
+
2. **确认分支**:当前分支必须为 `<WORK>`(已由步骤 0.2 保证)。
|
|
110
|
+
|
|
111
|
+
3. **与远程同步**:
|
|
112
|
+
```bash
|
|
113
|
+
git fetch origin
|
|
114
|
+
git pull origin <WORK> --rebase
|
|
115
|
+
```
|
|
33
116
|
|
|
34
117
|
**前置条件不满足 → 立即停止,向用户报告具体问题和处理建议。**
|
|
35
118
|
|
|
36
119
|
---
|
|
37
120
|
|
|
38
|
-
## 步骤
|
|
121
|
+
## 步骤 2:质量门(不可绕过)
|
|
122
|
+
|
|
123
|
+
加载 `Skill("code-quality-gate")` 后执行四项检查。工具按项目特征自适应选择:
|
|
39
124
|
|
|
40
|
-
|
|
125
|
+
### 2.1 Lint
|
|
41
126
|
|
|
127
|
+
| 项目特征 | 检测方式 | 命令(优先脚本,回退直接调用) |
|
|
128
|
+
|---------|---------|------------------------------|
|
|
129
|
+
| `eslint` 配置存在 | `.eslintrc.*` / `eslint.config.*` | `<PKG> lint` 或 `npx eslint .` |
|
|
130
|
+
| `oxlint` 配置存在 | `oxlintrc.*` | `<PKG> lint` 或 `npx oxlint` |
|
|
131
|
+
| `ruff` 配置存在 | `ruff.toml` / `pyproject.toml[tool.ruff]` | `ruff check .` |
|
|
132
|
+
| `golangci-lint` 配置 | `.golangci.yml` | `golangci-lint run` |
|
|
133
|
+
| 无已知配置 | — | 跳过(标记 N/A) |
|
|
134
|
+
|
|
135
|
+
### 2.2 类型检查
|
|
136
|
+
|
|
137
|
+
| 项目特征 | 配置 | 命令 |
|
|
138
|
+
|---------|------|------|
|
|
139
|
+
| TypeScript | `tsconfig.json` | `<PKG> type-check` 或 `npx tsc --noEmit` |
|
|
140
|
+
| Python + mypy | `mypy.ini` / `pyproject.toml[tool.mypy]` | `mypy .` |
|
|
141
|
+
| 无类型检查配置 | — | 跳过(标记 N/A) |
|
|
142
|
+
|
|
143
|
+
### 2.3 构建
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
<PKG> build
|
|
42
147
|
```
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
└─────────────────────────────────────────────┘
|
|
148
|
+
|
|
149
|
+
若无 `build` 脚本,尝试项目级构建命令(如 `go build ./...`),无则跳过(标记 N/A)。
|
|
150
|
+
|
|
151
|
+
### 2.4 依赖审计
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
<PKG> audit
|
|
51
155
|
```
|
|
52
156
|
|
|
53
|
-
|
|
157
|
+
审计命令不可用时跳过(标记 N/A,注明该包管理器不提供审计功能)。
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
┌─────────────────────────────────────────────────┐
|
|
161
|
+
│ 质量门检查(全部通过才继续) │
|
|
162
|
+
│ │
|
|
163
|
+
│ 1. Lint(自适应: eslint/ruff/golangci-lint/...)│
|
|
164
|
+
│ 2. Type-check(自适应: tsc/mypy/...) │
|
|
165
|
+
│ 3. Build(自适应) │
|
|
166
|
+
│ 4. Deps Audit(自适应: npm auditor/...) │
|
|
167
|
+
└─────────────────────────────────────────────────┘
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**全部通过 → 进入步骤 3**
|
|
54
171
|
|
|
55
172
|
**任意项失败**:
|
|
56
173
|
1. 输出失败项的详细错误信息
|
|
57
174
|
2. **立即停止**,不继续后续步骤
|
|
58
175
|
3. 向用户报告:哪个检查失败、具体错误、修复建议
|
|
59
|
-
4. 用户修复后重新执行 `/publish` 从步骤
|
|
176
|
+
4. 用户修复后重新执行 `/publish` 从步骤 2 开始
|
|
60
177
|
|
|
61
178
|
---
|
|
62
179
|
|
|
63
|
-
## 步骤
|
|
180
|
+
## 步骤 3:测试(不可绕过)
|
|
64
181
|
|
|
65
|
-
|
|
182
|
+
使用步骤 0.5 检测到的测试命令:
|
|
66
183
|
|
|
67
184
|
```bash
|
|
68
|
-
|
|
185
|
+
<TEST_CMD>
|
|
69
186
|
```
|
|
70
187
|
|
|
71
|
-
**全部通过 → 进入步骤
|
|
188
|
+
**全部通过 → 进入步骤 4**
|
|
72
189
|
|
|
73
190
|
**测试失败**:
|
|
74
191
|
1. 输出失败的测试名称和错误详情
|
|
75
192
|
2. **立即停止**,不继续后续步骤
|
|
76
193
|
3. 向用户报告:失败测试数量、失败原因摘要
|
|
77
|
-
4. 用户修复后重新执行 `/publish` 从步骤
|
|
194
|
+
4. 用户修复后重新执行 `/publish` 从步骤 2 开始
|
|
78
195
|
|
|
79
196
|
---
|
|
80
197
|
|
|
81
|
-
## 步骤
|
|
198
|
+
## 步骤 4:版本递增
|
|
82
199
|
|
|
83
200
|
加载 `Skill("git-workflow-and-versioning")` 执行版本管理。
|
|
84
201
|
|
|
85
|
-
|
|
86
|
-
- 用户可指定版本类型:`patch`(默认)、`minor`、`major`
|
|
87
|
-
- 未指定则默认 `patch` 递增
|
|
202
|
+
参数:用户可指定 `patch`(默认)、`minor`、`major`。未指定则默认 `patch`。
|
|
88
203
|
|
|
89
|
-
1.
|
|
90
|
-
2.
|
|
204
|
+
1. 从 `<VERSION_FILE>` 读取当前版本号 `<CUR_VER>`
|
|
205
|
+
2. 按类型递增:
|
|
91
206
|
- `patch`:X.Y.Z → X.Y.(Z+1)
|
|
92
207
|
- `minor`:X.Y.Z → X.(Y+1).0
|
|
93
208
|
- `major`:X.Y.Z → (X+1).0.0
|
|
94
|
-
3. 更新
|
|
95
|
-
|
|
209
|
+
3. 更新 `<VERSION_FILE>` 中的版本字段为新版本号 `<NEW_VER>`
|
|
210
|
+
- `package.json`:修改 `version` 字段
|
|
211
|
+
- `pyproject.toml`:修改 `[project]` 下 `version`,或 `[tool.poetry]` 下 `version`
|
|
212
|
+
- `Cargo.toml`:修改 `[package]` 下 `version`
|
|
213
|
+
4. 若项目使用 Git tag 标注版本(非 npm 包),同时更新版本文件中的 git tag 引用
|
|
214
|
+
|
|
215
|
+
输出:`版本递增:v<CUR_VER> → v<NEW_VER>(类型:<patch|minor|major>,文件:<VERSION_FILE>)`
|
|
96
216
|
|
|
97
217
|
---
|
|
98
218
|
|
|
99
|
-
## 步骤
|
|
219
|
+
## 步骤 5:提交并推送
|
|
100
220
|
|
|
101
221
|
```bash
|
|
102
|
-
git add
|
|
103
|
-
git commit -m "chore: bump version to v
|
|
104
|
-
git push origin
|
|
222
|
+
git add <VERSION_FILE>
|
|
223
|
+
git commit -m "chore: bump version to v<NEW_VER>"
|
|
224
|
+
git push origin <WORK>
|
|
105
225
|
```
|
|
106
226
|
|
|
227
|
+
> 若版本文件关联了锁文件(如 `package.json` 关联 `package-lock.json`),一并提交锁文件变更。
|
|
228
|
+
|
|
107
229
|
推送失败时报告错误并停止。
|
|
108
230
|
|
|
109
231
|
---
|
|
110
232
|
|
|
111
|
-
## 步骤
|
|
233
|
+
## 步骤 6:创建 PR(工作分支 → 默认分支)
|
|
112
234
|
|
|
113
235
|
```bash
|
|
114
236
|
gh pr create \
|
|
115
|
-
--base
|
|
116
|
-
--head
|
|
117
|
-
--title "Release v
|
|
237
|
+
--base <DEFAULT> \
|
|
238
|
+
--head <WORK> \
|
|
239
|
+
--title "Release v<NEW_VER>" \
|
|
118
240
|
--body "## 发布内容
|
|
119
241
|
|
|
120
|
-
- 版本:v
|
|
242
|
+
- 版本:v<NEW_VER>
|
|
121
243
|
- 类型:<patch|minor|major>
|
|
122
244
|
|
|
123
245
|
## 检查清单
|
|
@@ -132,7 +254,7 @@ PR 创建失败时报告错误并停止。
|
|
|
132
254
|
|
|
133
255
|
---
|
|
134
256
|
|
|
135
|
-
## 步骤
|
|
257
|
+
## 步骤 7:合并 PR
|
|
136
258
|
|
|
137
259
|
```bash
|
|
138
260
|
gh pr merge --merge
|
|
@@ -144,31 +266,31 @@ gh pr merge --merge
|
|
|
144
266
|
|
|
145
267
|
---
|
|
146
268
|
|
|
147
|
-
## 步骤
|
|
269
|
+
## 步骤 8:在默认分支上创建并推送 tag
|
|
148
270
|
|
|
149
|
-
**仅在 PR 合并成功后**,在
|
|
271
|
+
**仅在 PR 合并成功后**,在 `<DEFAULT>` 上创建 tag:
|
|
150
272
|
|
|
151
273
|
```bash
|
|
152
|
-
# 1.
|
|
153
|
-
git checkout
|
|
274
|
+
# 1. 切换到默认分支并拉取最新
|
|
275
|
+
git checkout <DEFAULT> && git pull origin <DEFAULT>
|
|
154
276
|
|
|
155
|
-
# 2.
|
|
156
|
-
git tag -a v
|
|
277
|
+
# 2. 在默认分支上创建 tag(只在这里,不在工作分支上打 tag)
|
|
278
|
+
git tag -a v<NEW_VER> -m "Release v<NEW_VER>"
|
|
157
279
|
|
|
158
|
-
# 3. 推送 tag
|
|
159
|
-
git push origin v
|
|
280
|
+
# 3. 推送 tag
|
|
281
|
+
git push origin v<NEW_VER>
|
|
160
282
|
```
|
|
161
283
|
|
|
162
|
-
> **关键**:tag
|
|
284
|
+
> **关键**:tag 只在默认分支上创建,确保 release workflow 只触发一次。不要在工作分支上打 tag。
|
|
163
285
|
|
|
164
286
|
推送失败时报告错误并停止。
|
|
165
287
|
|
|
166
288
|
---
|
|
167
289
|
|
|
168
|
-
## 步骤
|
|
290
|
+
## 步骤 9:切回工作分支并报告结果
|
|
169
291
|
|
|
170
292
|
```bash
|
|
171
|
-
git checkout
|
|
293
|
+
git checkout <WORK>
|
|
172
294
|
```
|
|
173
295
|
|
|
174
296
|
输出发布完成报告:
|
|
@@ -176,14 +298,18 @@ git checkout dev
|
|
|
176
298
|
```
|
|
177
299
|
## 发布完成报告
|
|
178
300
|
|
|
179
|
-
- 版本:v
|
|
301
|
+
- 版本:v<CUR_VER> → v<NEW_VER>
|
|
180
302
|
- 类型:<patch|minor|major>
|
|
181
|
-
-
|
|
182
|
-
-
|
|
303
|
+
- 包管理器:<npm|yarn|pnpm>
|
|
304
|
+
- 版本文件:<VERSION_FILE>
|
|
305
|
+
- 默认分支:<DEFAULT>
|
|
306
|
+
- 工作分支:<WORK>
|
|
307
|
+
- 质量门:通过
|
|
308
|
+
- 测试:通过
|
|
183
309
|
- Commit:<commit hash>
|
|
184
|
-
- Tag:v
|
|
310
|
+
- Tag:v<NEW_VER>(指向 <DEFAULT>)
|
|
185
311
|
- PR:#<PR number>(已合并)
|
|
186
|
-
-
|
|
312
|
+
- 当前分支:<WORK>
|
|
187
313
|
```
|
|
188
314
|
|
|
189
315
|
---
|
|
@@ -191,31 +317,36 @@ git checkout dev
|
|
|
191
317
|
## 流程总览
|
|
192
318
|
|
|
193
319
|
```
|
|
194
|
-
步骤 0:
|
|
320
|
+
步骤 0: 环境检测(分支名 + 包管理器 + 版本文件 + 测试命令)
|
|
195
321
|
↓
|
|
196
|
-
步骤 1:
|
|
322
|
+
步骤 1: 前置检查(工作区干净 + 正确分支 + 拉取最新)
|
|
323
|
+
↓
|
|
324
|
+
步骤 2: 质量门(Lint + Type-check + Build + Audit)[自适应工具]
|
|
197
325
|
↓ 全部通过
|
|
198
|
-
步骤
|
|
326
|
+
步骤 3: 测试(自适应测试命令)
|
|
199
327
|
↓ 全部通过
|
|
200
|
-
步骤
|
|
328
|
+
步骤 4: 版本递增(patch/minor/major,自适应版本文件)
|
|
201
329
|
↓
|
|
202
|
-
步骤
|
|
330
|
+
步骤 5: 提交并推送(commit VERSION_FILE + push 工作分支)
|
|
203
331
|
↓
|
|
204
|
-
步骤
|
|
332
|
+
步骤 6: 创建 PR(工作分支 → 默认分支)
|
|
205
333
|
↓
|
|
206
|
-
步骤
|
|
334
|
+
步骤 7: 合并 PR
|
|
207
335
|
↓
|
|
208
|
-
步骤
|
|
336
|
+
步骤 8: 在默认分支上创建并推送 tag
|
|
209
337
|
↓
|
|
210
|
-
步骤
|
|
338
|
+
步骤 9: 切回工作分支 + 报告完成
|
|
211
339
|
```
|
|
212
340
|
|
|
341
|
+
---
|
|
342
|
+
|
|
213
343
|
## 红线
|
|
214
344
|
|
|
215
|
-
-
|
|
345
|
+
- 不确认分支关系就发布(可能导致版本混乱)
|
|
216
346
|
- 工作区不干净时发布(未提交变更混入发布)
|
|
217
347
|
- 质量门失败仍继续(带问题的代码不能发布)
|
|
218
348
|
- 测试失败仍继续(回归未发现的发布是事故)
|
|
219
349
|
- 手动修改版本号而不使用版本递增流程(破坏版本号一致性)
|
|
220
|
-
- tag
|
|
221
|
-
- 使用 `--squash` 合并 PR
|
|
350
|
+
- tag 不指向默认分支(tag 应指向正式发布分支,确保 release workflow 正确触发)
|
|
351
|
+
- 使用 `--squash` 合并 PR(丢失工作分支的提交历史细节)
|
|
352
|
+
- 硬编码包管理器命令而不使用环境检测结果(导致非 npm 项目命令无效)
|
|
@@ -1,65 +1,94 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
3
|
-
argument-hint: [--dry-run 预览模式]
|
|
4
|
-
version: "3.
|
|
2
|
+
description: 同步项目文件——从 npm 模板同步最新指令/技能/智能体到项目 .claude/ 目录
|
|
3
|
+
argument-hint: [--dry-run 预览模式] [--force 强制覆盖自定义内容]
|
|
4
|
+
version: "3.47.2"
|
|
5
5
|
updated: "2026-05-14"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# 同步项目文件
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
从 `jarvis-agent-factory` npm 包的模板目录同步最新配置到当前项目的 `.claude/` 目录。
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## 步骤 0:定位模板源
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
模板文件随 npm 包分发。按以下优先级定位:
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
|
|
16
|
+
1. **项目本地安装**(优先):
|
|
17
|
+
```
|
|
18
|
+
<项目根>/node_modules/jarvis-agent-factory/dist/src/templates/platforms/claude/
|
|
19
|
+
```
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
2. **全局安装**(本地未安装时):
|
|
22
|
+
执行 `npm root -g` 获取全局 node_modules 路径,拼接 `/jarvis-agent-factory/dist/src/templates/platforms/claude/`
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
3. **未找到**:输出以下提示并**停止**:
|
|
25
|
+
```
|
|
26
|
+
未找到 jarvis-agent-factory 模板源。
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
请先安装:
|
|
29
|
+
npm install jarvis-agent-factory
|
|
30
|
+
|
|
31
|
+
或全局安装后使用 jarvis CLI 同步:
|
|
32
|
+
npm install -g jarvis-agent-factory
|
|
33
|
+
jarvis init --yes
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
> 模板路径在 npm 包内(`node_modules/jarvis-agent-factory/dist/src/templates/`),不要使用项目仓库内的 `src/templates/` 路径。普通用户项目中没有该目录。
|
|
37
|
+
|
|
38
|
+
> 若项目已安装 `jarvis` CLI,可直接执行 `jarvis init --yes` 完成同步——该命令使用 SHA256 hash 三级对比和 Markdown section 级冲突标记,比手动比对更精确。执行后跳过以下手动步骤。
|
|
28
39
|
|
|
29
|
-
##
|
|
40
|
+
## 步骤 1:同步指令
|
|
30
41
|
|
|
31
|
-
|
|
42
|
+
从 `<模板源>/commands/` 同步到 `.claude/commands/`:
|
|
32
43
|
|
|
33
|
-
- `
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
44
|
+
- 扫描模板 `commands/` 下所有 `.md` 文件
|
|
45
|
+
- 对每个模板文件:
|
|
46
|
+
- 读取模板文件内容
|
|
47
|
+
- 检查目标 `.claude/commands/<文件名>` 是否存在
|
|
48
|
+
- **目标不存在** → 创建文件,写入模板内容
|
|
49
|
+
- **目标存在、内容相同** → 无需操作
|
|
50
|
+
- **目标存在、内容不同** → 默认跳过(视为用户已自定义)
|
|
51
|
+
- `--force` 模式:内容不同时以模板覆盖目标
|
|
37
52
|
|
|
38
|
-
|
|
53
|
+
## 步骤 2:同步技能
|
|
39
54
|
|
|
40
|
-
|
|
55
|
+
从 `<模板源>/skills/` 同步到 `.claude/skills/`:
|
|
41
56
|
|
|
42
|
-
|
|
57
|
+
- 扫描模板 `skills/` 下的子目录,每个子目录是一个技能
|
|
58
|
+
- 对每个技能目录,逐文件比对:
|
|
59
|
+
- **目标不存在** → 递归创建整个技能目录
|
|
60
|
+
- **目标存在** → 逐文件比对:
|
|
61
|
+
- 模板有、目标无 → 新增文件
|
|
62
|
+
- 模板有、目标有、内容相同 → 跳过
|
|
63
|
+
- 模板有、目标有、内容不同 → 默认跳过(用户已自定义)
|
|
64
|
+
- 目标有、模板无 → 跳过(用户自行添加的文件,不删除)
|
|
65
|
+
|
|
66
|
+
## 步骤 3:同步智能体
|
|
43
67
|
|
|
44
|
-
|
|
45
|
-
- 检查 `.claude/skills/` 中存在但模板目录已删除的技能目录,标记为过时
|
|
46
|
-
- 扫描 `.claude/` 下的 `.cache`、`.tmp`、`*.log` 等临时文件并清理
|
|
68
|
+
从 `<模板源>/agents/` 同步到 `.claude/agents/`(若模板中存在 `agents/` 目录):
|
|
47
69
|
|
|
48
|
-
|
|
70
|
+
- 扫描模板 `agents/` 下所有 `.md` 文件
|
|
71
|
+
- 比较策略与步骤 1 相同
|
|
72
|
+
- 若模板中无 `agents/` 目录 → 跳过此步骤
|
|
49
73
|
|
|
50
|
-
|
|
74
|
+
## 跳过保护
|
|
51
75
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- `
|
|
55
|
-
-
|
|
76
|
+
以下情况**不做任何操作**:
|
|
77
|
+
|
|
78
|
+
- 目标文件已存在且内容与模板不同 → 视为用户自定义,**不覆盖**(`--force` 除外)
|
|
79
|
+
- 目标目录中存在但模板中不存在的文件/目录 → 视为用户自行添加,**不删除**
|
|
80
|
+
- 以下路径始终跳过:
|
|
81
|
+
- `node_modules/`、`.git/`
|
|
82
|
+
- `dist/`、`build/`、`.next/`(构建产物)
|
|
83
|
+
- `docs/` 下含日期路径的子目录(`YYYY-MM-DD/`)
|
|
84
|
+
- `*.log`、`.cache`、`.tmp`(临时文件)
|
|
56
85
|
|
|
57
86
|
## 同步策略
|
|
58
87
|
|
|
59
|
-
-
|
|
60
|
-
- **--dry-run
|
|
61
|
-
-
|
|
62
|
-
-
|
|
88
|
+
- **默认模式**:仅新增模板中存在但目标中不存在的文件,不覆盖任何已有文件
|
|
89
|
+
- **--dry-run 模式**:预览全部变更(新增/覆盖/跳过),不实际修改任何文件
|
|
90
|
+
- **--force 模式**:模板与目标内容不同时,以模板为准覆盖目标文件
|
|
91
|
+
- **保守删除**:不自动删除目标目录中的任何文件或目录
|
|
63
92
|
|
|
64
93
|
## 同步报告
|
|
65
94
|
|
|
@@ -68,19 +97,35 @@ updated: "2026-05-14"
|
|
|
68
97
|
```
|
|
69
98
|
=== 同步报告 ===
|
|
70
99
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
100
|
+
模板源: <绝对路径>
|
|
101
|
+
模式: 正常 / --dry-run / --force
|
|
102
|
+
|
|
103
|
+
【指令】(.claude/commands/)
|
|
104
|
+
新增: N 个
|
|
105
|
+
+ <文件名1>
|
|
106
|
+
+ <文件名2>
|
|
107
|
+
更新: N 个(--force 覆盖)
|
|
108
|
+
~ <文件名>
|
|
109
|
+
跳过: N 个(用户已自定义)
|
|
110
|
+
· <文件名>(目标存在且内容不同)
|
|
111
|
+
一致: N 个(无需操作)
|
|
112
|
+
|
|
113
|
+
【技能】(.claude/skills/)
|
|
114
|
+
新增: N 更新: N 跳过: N 一致: N
|
|
115
|
+
(列出各分类下的具体技能名)
|
|
116
|
+
|
|
117
|
+
【智能体】(.claude/agents/)
|
|
118
|
+
新增: N 更新: N 跳过: N 一致: N
|
|
119
|
+
(若模板中无 agents 目录则显示"模板中无 agents 目录,已跳过")
|
|
120
|
+
|
|
121
|
+
总计: 新增 N / 更新 N / 跳过 N / 一致 N
|
|
122
|
+
预览模式: 是 / 否
|
|
79
123
|
```
|
|
80
124
|
|
|
81
125
|
## 运行约束
|
|
82
126
|
|
|
83
127
|
- 所有文件操作使用绝对路径
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
128
|
+
- 文件对比需实际读取内容,禁止仅凭文件名或猜测判断
|
|
129
|
+
- `--dry-run` 模式下**不执行任何写操作**
|
|
130
|
+
- 不修改 `.claude/settings.json`、`.mcp.json` 等配置文件(这些由 `jarvis init` 统一管理)
|
|
131
|
+
- 路径分隔符使用 `/`(Unix 风格,跨平台兼容)
|
package/package.json
CHANGED