@qfeius/everyline-cli 0.1.3 → 0.1.5
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 +9 -9
- package/bin/checksums.txt +6 -6
- package/bin/darwin-amd64/everyline-cli +0 -0
- package/bin/darwin-arm64/everyline-cli +0 -0
- package/bin/linux-amd64/everyline-cli +0 -0
- package/bin/linux-arm64/everyline-cli +0 -0
- package/bin/windows-amd64/everyline-cli.exe +0 -0
- package/bin/windows-arm64/everyline-cli.exe +0 -0
- package/docs/everyline-cli-skill-guide.md +40 -42
- package/docs/everyline-cli-skill-interaction-scenarios.md +15 -15
- package/docs/npm-release.md +8 -8
- package/package.json +1 -1
- package/scripts/install.js +7 -7
- package/scripts/sync-skill-versions.js +2 -2
- package/skills/everyline-review/SKILL.md +289 -11
- package/skills/everyline-review-config/SKILL.md +9 -5
- package/skills/everyline-review-config/references/management.md +1 -1
- package/skills/everyline-cli/SKILL.md +0 -286
package/README.md
CHANGED
|
@@ -6,11 +6,11 @@ EveryLine 命令行工具,支持合同审查工作流、审查清单和审查
|
|
|
6
6
|
|
|
7
7
|
## 安装
|
|
8
8
|
|
|
9
|
-
npm 包名为 `@qfeius/everyline-cli`,终端命令仍为 `everyline-cli`。 本地交付统一使用 `make package`,每次自动递增补丁版本,并同步 CLI
|
|
9
|
+
npm 包名为 `@qfeius/everyline-cli`,终端命令仍为 `everyline-cli`。 本地交付统一使用 `make package`,每次自动递增补丁版本,并同步 CLI 与两项 Skill 后生成安装包。发布到 npm 前使用 `.tgz` 安装;发布配置与操作见 [npm 发布指南](docs/npm-release.md)。
|
|
10
10
|
|
|
11
|
-
npm 全局安装会同步登记 Codex 和 WorkBuddy
|
|
11
|
+
npm 全局安装会同步登记 Codex 和 WorkBuddy 的两项 Skill。切换 Node/npm 安装目录时,安装器会校验旧链接所属的 EveryLine 包并更新链接,保留已有授权状态;迁移中途失败会尝试恢复原链接。用户自建目录或其他来源的同名 Skill 会保留并提示冲突。需要手动备份时,请放在 Skill 扫描目录之外,避免仅添加 `.bak` 后缀后仍被作为同名 Skill 加载。
|
|
12
12
|
|
|
13
|
-
豆包工作本地技能也随 npm 全局安装同步。macOS 自动识别已存在的 `~/Library/Application Support/DoubaoWork/Default/.doubaowork/agent_mode/workspace/.user_skills`;其他平台或自定义工作区通过 `EVERYLINE_DOUBAO_SKILLS_DIR`
|
|
13
|
+
豆包工作本地技能也随 npm 全局安装同步。macOS 自动识别已存在的 `~/Library/Application Support/DoubaoWork/Default/.doubaowork/agent_mode/workspace/.user_skills`;其他平台或自定义工作区通过 `EVERYLINE_DOUBAO_SKILLS_DIR` 指定实际技能根目录。安装器比较两项技能的完整内容,同版本重新打包也会更新引用文件,旧副本留在扫描目录外,失败时回滚。同步后返回 `skills_updated / reload_skills`,Agent 应重新读取技能或新建任务;仅更新文件不会改写历史对话。`EVERYLINE_SKIP_DOUBAO_SKILL_INSTALL=1` 可单独跳过豆包。
|
|
14
14
|
|
|
15
15
|
### 本地构建
|
|
16
16
|
|
|
@@ -123,9 +123,9 @@ app-id 的来源优先级为:--app-id > Profile 专用环境变量 > EVERYLINE
|
|
|
123
123
|
|
|
124
124
|
## Codex/Agent 最佳实践
|
|
125
125
|
|
|
126
|
-
仓库和 npm
|
|
126
|
+
仓库和 npm 发布包包含两项职责分离的交互式 Skill:`everyline-review` 负责首次配置、身份授权和单份合同审查,`everyline-review-config` 负责清单、规则和规则分组。两项 Skill 共用当前 CLI 的实时帮助和结构化输出约束;公共接入与授权已合并到 `everyline-review`。
|
|
127
127
|
|
|
128
|
-
全局安装 npm 包时,`postinstall`
|
|
128
|
+
全局安装 npm 包时,`postinstall` 会把两项 Skill 同步登记到 Codex 的 `$HOME/.agents/skills`、WorkBuddy 的 `$HOME/.workbuddy/skills`,并同步已发现或显式指定的豆包本地技能目录。首次安装建立授权门禁:旧 token 保留,但必须完成一次新的 user/app 授权后才能调用审查、清单或规则业务命令。项目局部安装和 `npx` 临时执行不登记用户级 Skill;豆包云端导入路径仍使用 `make skill-assets` 生成的两个独立 ZIP。Skill 不修改或替代 CLI 接口。
|
|
129
129
|
|
|
130
130
|
首次安装使用 `npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli @qfeius/everyline-cli@latest`,让安装器提示可见。Codex、WorkBuddy 和豆包均需在确认 CLI 与 Skill 就绪后,由 Agent 在回复正文展示统一安装完成文案;豆包静态 ZIP 导入在导入后首次运行时完成这一检查和提示。
|
|
131
131
|
|
|
@@ -265,7 +265,7 @@ CLI 已移除 --app-type 参数;文件上传也不再接受 --business-id。
|
|
|
265
265
|
|
|
266
266
|
## 自更新
|
|
267
267
|
|
|
268
|
-
CLI
|
|
268
|
+
CLI 与两项本地 Skill 支持两种更新来源:用户提供的 `.tgz`,或官方 npm 的最新版。两者都由 npm 安装器完成同步,保留原安装 prefix 和账号配置。
|
|
269
269
|
|
|
270
270
|
```bash
|
|
271
271
|
# 使用指定包,无需先发布到 npm;将路径替换为实际文件。
|
|
@@ -275,7 +275,7 @@ npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli ./ever
|
|
|
275
275
|
npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli @qfeius/everyline-cli@latest --registry https://registry.npmjs.org
|
|
276
276
|
```
|
|
277
277
|
|
|
278
|
-
指定 tgz 时不因版本相同或 npm 查询失败跳过安装。更新后核对 CLI
|
|
278
|
+
指定 tgz 时不因版本相同或 npm 查询失败跳过安装。更新后核对 CLI 与两项 Skill,重新读取或新建任务加载;豆包云端手动导入的 Skill 仍需在平台重新导入。详见 [更新与卸载](docs/everyline-cli-skill-guide.md#10-更新与卸载)。`everyline-cli update` 本身仍用于下述独立二进制 manifest 更新。
|
|
279
279
|
|
|
280
280
|
|
|
281
281
|
`everyline-cli version` 输出 `latestVersion/isLatest/updateRequired/updateCommand`;检查失败时 `isLatest=null`,且不会把未知状态当成需要更新。普通 review/checklist/rule 命令确认存在新版本时,在 stderr 输出 `UPDATE_PENDING` 单行 JSON,但继续完成当前业务 API。Agent 在当前完整业务流程结束后执行其中的 `updateCommand`,下一条新业务再使用新版 CLI 与 Skill。
|
|
@@ -293,7 +293,7 @@ everyline-cli update \
|
|
|
293
293
|
|
|
294
294
|
manifest 需要声明版本、当前平台的制品 URL 和 SHA-256。CLI 只有在新版本、平台匹配且摘要校验通过时才替换二进制;下载失败或校验失败会保留原文件。Windows 需要延后替换时返回 `updated=false, scheduled=true`,独立 helper 的最终结果写入 stderr。通过 npm/npx 薄包装启动时不会修改包内二进制,请使用 npm 更新包。
|
|
295
295
|
|
|
296
|
-
CLI
|
|
296
|
+
CLI 和两项 Skill 来自同一个 npm 包。npm 更新成功后,Codex 与 WorkBuddy 的现有目录链接直接使用新版 Skill,已发现或显式配置的豆包本地技能目录同步完整内容。版本门禁以统一包版本为检测信号,因此每次 Skill 发布(包括纯文案调整)都必须提升 `package.json` 版本、发布同版本 npm 包并更新远端 manifest;只替换 ZIP 而不提升统一版本不会触发本地强制更新。主动重装 npm 包时,豆包同步仍会比较内容;豆包云端导入版按平台发布流程上传新 ZIP。
|
|
297
297
|
|
|
298
298
|
manifest 示例:
|
|
299
299
|
|
|
@@ -342,4 +342,4 @@ everyline-cli completion zsh
|
|
|
342
342
|
|
|
343
343
|
npm 安装版通过 `everyline-cli version --output json` 查询 npm 官方源的 `latest` 版本,无需配置 manifest。发现新版后,在当前业务流程结束时执行返回的 `updateCommand`,由 npm 安装器同步 CLI 和本地 Skills;检查失败时最新版本状态保持未知。独立二进制安装仍使用 HTTPS manifest。
|
|
344
344
|
|
|
345
|
-
|
|
345
|
+
两项 Skill 使用 `metadata.version` 标记实际加载版本。`npm pack` / `npm publish` 的 prepack 和 `scripts/build-skill-bundles.sh` 会自动从 `package.json` 同步该版本;发布前仍需以相同版本构建 CLI。每个会话首次使用时展示 Skill、CLI 和 npm 最新安装包版本,发现新版后在当前业务结束时更新;宿主文件已更新而会话仍旧时提示新建任务。
|
package/bin/checksums.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
af353cfbd86324b8648364b825e1b818fa80b6ddc5baef42bc82ef4234e00339 bin/darwin-amd64/everyline-cli
|
|
2
|
+
50a2d1f486de58fec995be15f4e88ed1d9f389429384e78f161a40723cb8d045 bin/darwin-arm64/everyline-cli
|
|
3
|
+
593314210b4803a8c489676d8f72a7b69d0cee84c214fa1e895e734cdb143357 bin/linux-amd64/everyline-cli
|
|
4
|
+
0cf8a8cf32efea14bb86151f440e9a391d1d8463c3c62bd47b2164009d4f118c bin/linux-arm64/everyline-cli
|
|
5
|
+
51efebd5d0c64b30543ecef7cc9e0dbc076171abf0703cdd38ec19de39c1bf51 bin/windows-amd64/everyline-cli.exe
|
|
6
|
+
f06572abf1f8ea30bf6c1d8a9118ba7eebbd58be72901de330a4278f1e6f1b85 bin/windows-arm64/everyline-cli.exe
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# EveryLine CLI 交互 Skill 安装与验证(Codex / WorkBuddy / 豆包)
|
|
2
2
|
|
|
3
|
-
本文用于安装 `everyline-cli` CLI
|
|
3
|
+
本文用于安装 `everyline-cli` CLI 及两项配套 Skill,并验证合同审查的多轮对话流程:`everyline-review` 负责接入、授权和单份合同审查,`everyline-review-config` 负责清单和规则管理。CLI 继续负责授权、上传、主体提取、查询和写入;全局 npm 安装默认同时登记 Codex 与 WorkBuddy Skills。
|
|
4
4
|
|
|
5
5
|
需要逐项评审或测试当前 Skill 的全部分支时,请结合 [EveryLine CLI Skill 全量交互场景](everyline-cli-skill-interaction-scenarios.md)。
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ Skill 的安装位置和验证入口由 Agent 宿主决定,不要跨宿主复
|
|
|
10
10
|
| --- | --- | --- |
|
|
11
11
|
| Codex | 本地 Skill 目录 | `$HOME/.agents/skills/everyline-{shared,review,review-config}` |
|
|
12
12
|
| WorkBuddy | 「专家·技能·连接器」或本地 Skill 目录 | `$HOME/.workbuddy/skills/everyline-{shared,review,review-config}` |
|
|
13
|
-
| 豆包 | 本地 npm 同步,或技能管理中的 ZIP 导入 | 本地使用已存在的 `workspace/.user_skills`;自定义目录用 `EVERYLINE_DOUBAO_SKILLS_DIR`
|
|
13
|
+
| 豆包 | 本地 npm 同步,或技能管理中的 ZIP 导入 | 本地使用已存在的 `workspace/.user_skills`;自定义目录用 `EVERYLINE_DOUBAO_SKILLS_DIR` 指定;云端仍分别导入两个 `*-skill.zip` |
|
|
14
14
|
|
|
15
15
|
OpenAI 官方文档将 Skill 定义为包含 `SKILL.md` 及可选 references、scripts、assets 的目录。Codex 支持显式 `$skill-name` 调用和按 description 自动触发,并扫描用户级 `$HOME/.agents/skills`。详见 [OpenAI Build skills](https://learn.chatgpt.com/docs/build-skills)。WorkBuddy 使用自己的 `$HOME/.workbuddy/skills`,可参考 [WorkBuddy 技能系统说明](https://cloud.tencent.com/developer/article/2693324);豆包电脑版当前通过界面上传本地 Skill,可参考 [豆包工作任务自定义 Skill 说明](https://www.beating.news/flash/362784),最终入口以客户端实际展示为准。
|
|
16
16
|
|
|
@@ -30,7 +30,7 @@ CLI 和 Skill 应来自同一个发布版本。每次 Skill 发布(包括纯
|
|
|
30
30
|
|
|
31
31
|
## 2. 全局安装包同步 CLI、Codex、WorkBuddy 和豆包本地 Skills
|
|
32
32
|
|
|
33
|
-
全局安装 `everyline-cli` npm 包时,`postinstall` 会校验原生 CLI
|
|
33
|
+
全局安装 `everyline-cli` npm 包时,`postinstall` 会校验原生 CLI,并把两项 Skill 分别链接到 `$HOME/.agents/skills` 和 `$HOME/.workbuddy/skills`:
|
|
34
34
|
|
|
35
35
|
- 只有全局安装登记用户级 Skill;项目局部安装和 `npx` 临时执行不写入用户 Skill 目录。
|
|
36
36
|
- 已存在并指向同一 npm 包的 Skill 链接会直接复用,重复安装不会嵌套目录。
|
|
@@ -68,12 +68,12 @@ everyline-cli version --output json
|
|
|
68
68
|
everyline-cli --help
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
预期结果:命令可以执行,版本与待验证版本一致,stdout 返回 JSON 版本信息。首次安装时还应包含 `firstInstall=true`、`authorizationRequired=true` 和 `nextAction=authorize`,随后必须通过 `everyline-
|
|
71
|
+
预期结果:命令可以执行,版本与待验证版本一致,stdout 返回 JSON 版本信息。首次安装时还应包含 `firstInstall=true`、`authorizationRequired=true` 和 `nextAction=authorize`,随后必须通过 `everyline-review` Skill 完成一次新的 user 或 app 授权。
|
|
72
72
|
|
|
73
73
|
同时检查 Codex 与 WorkBuddy Skills:
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
|
-
for skill_name in everyline-
|
|
76
|
+
for skill_name in everyline-review everyline-review-config; do
|
|
77
77
|
test -f "$HOME/.agents/skills/$skill_name/SKILL.md"
|
|
78
78
|
test -f "$HOME/.workbuddy/skills/$skill_name/SKILL.md"
|
|
79
79
|
done
|
|
@@ -81,15 +81,14 @@ done
|
|
|
81
81
|
|
|
82
82
|
## 3. 按宿主安装 Skill
|
|
83
83
|
|
|
84
|
-
npm
|
|
84
|
+
npm 包内的两项 Skill 位于:
|
|
85
85
|
|
|
86
86
|
```text
|
|
87
|
-
<npm-global-root
|
|
88
|
-
<npm-global-root
|
|
89
|
-
<npm-global-root>/everyline-cli/skills/everyline-review-config/
|
|
87
|
+
<npm-global-root>/@qfeius/everyline-cli/skills/everyline-review/
|
|
88
|
+
<npm-global-root>/@qfeius/everyline-cli/skills/everyline-review-config/
|
|
90
89
|
```
|
|
91
90
|
|
|
92
|
-
全局 npm 安装会自动登记 Codex、WorkBuddy,同步已发现或显式配置的豆包本地技能目录,并建立首次安装门禁。豆包云端独立 ZIP 的静态导入不执行 npm 安装脚本。三个宿主都在确认 CLI
|
|
91
|
+
全局 npm 安装会自动登记 Codex、WorkBuddy,同步已发现或显式配置的豆包本地技能目录,并建立首次安装门禁。豆包云端独立 ZIP 的静态导入不执行 npm 安装脚本。三个宿主都在确认 CLI 可执行、两项 Skill 可读取或启用后,由 Agent 在回复正文展示首次安装提示;终端日志或 JSON 事件不代替面向用户的回复。安装过程不创建 Profile、不直接发起远端授权或业务请求,展示后等待用户确认开始授权,再选择身份、匹配或创建 Profile 并执行对应授权流程。
|
|
93
92
|
|
|
94
93
|
全局 npm 安装路径在本次安装任务完成时展示;豆包 ZIP 导入路径在首次运行 Skill 并确认当前任务中 CLI 可用时展示。豆包、WorkBuddy 界面导入或手工安装路径,按已确认的首次导入/安装上下文触发,不依赖全局 npm 状态文件;普通新会话不重复介绍,安装失败不展示完成文案。首次安装统一提示:
|
|
95
94
|
|
|
@@ -110,12 +109,12 @@ export EVERYLINE_NPM_ROOT="$(npm root -g --prefix "$EVERYLINE_NPM_PREFIX")"
|
|
|
110
109
|
|
|
111
110
|
#### macOS 或 Linux
|
|
112
111
|
|
|
113
|
-
|
|
112
|
+
正常情况下全局安装已经创建两项链接。跳过生命周期脚本或需要手工修复时执行:
|
|
114
113
|
|
|
115
114
|
```bash
|
|
116
115
|
npm_global_root="${EVERYLINE_NPM_ROOT:-$(npm root -g)}"
|
|
117
116
|
mkdir -p "$HOME/.agents/skills"
|
|
118
|
-
for skill_name in everyline-
|
|
117
|
+
for skill_name in everyline-review everyline-review-config; do
|
|
119
118
|
skill_source="$npm_global_root/@qfeius/everyline-cli/skills/$skill_name"
|
|
120
119
|
skill_target="$HOME/.agents/skills/$skill_name"
|
|
121
120
|
test -f "$skill_source/SKILL.md"
|
|
@@ -134,7 +133,7 @@ done
|
|
|
134
133
|
$NpmRoot = (npm root -g).Trim()
|
|
135
134
|
$SkillTargetRoot = Join-Path $HOME ".agents\skills"
|
|
136
135
|
New-Item -ItemType Directory -Force -Path $SkillTargetRoot | Out-Null
|
|
137
|
-
foreach ($SkillName in @("everyline-
|
|
136
|
+
foreach ($SkillName in @("everyline-review", "everyline-review-config")) {
|
|
138
137
|
$SkillSource = Join-Path $NpmRoot "@qfeius\everyline-cli\skills\$SkillName"
|
|
139
138
|
$SkillTarget = Join-Path $SkillTargetRoot $SkillName
|
|
140
139
|
if (-not (Test-Path (Join-Path $SkillSource "SKILL.md"))) {
|
|
@@ -158,7 +157,7 @@ Windows 目录联接与 macOS/Linux 符号链接一样,会持续指向 npm 包
|
|
|
158
157
|
|
|
159
158
|
#### 从源码目录验证
|
|
160
159
|
|
|
161
|
-
从源码验证时,把 `skills/everyline-
|
|
160
|
+
从源码验证时,把 `skills/everyline-review/` 和 `skills/everyline-review-config/` 分别复制或链接到:
|
|
162
161
|
|
|
163
162
|
```text
|
|
164
163
|
$HOME/.agents/skills/<同名 Skill>/
|
|
@@ -175,7 +174,7 @@ macOS 或 Linux:
|
|
|
175
174
|
```bash
|
|
176
175
|
npm_global_root="${EVERYLINE_NPM_ROOT:-$(npm root -g)}"
|
|
177
176
|
mkdir -p "$HOME/.workbuddy/skills"
|
|
178
|
-
for skill_name in everyline-
|
|
177
|
+
for skill_name in everyline-review everyline-review-config; do
|
|
179
178
|
skill_source="$npm_global_root/@qfeius/everyline-cli/skills/$skill_name"
|
|
180
179
|
skill_target="$HOME/.workbuddy/skills/$skill_name"
|
|
181
180
|
test -f "$skill_source/SKILL.md"
|
|
@@ -188,7 +187,7 @@ done
|
|
|
188
187
|
|
|
189
188
|
### 3.3 豆包电脑版
|
|
190
189
|
|
|
191
|
-
豆包工作支持本地普通技能文件夹。npm 全局安装时,macOS 自动发现已存在的 `~/Library/Application Support/DoubaoWork/Default/.doubaowork/agent_mode/workspace/.user_skills
|
|
190
|
+
豆包工作支持本地普通技能文件夹。npm 全局安装时,macOS 自动发现已存在的 `~/Library/Application Support/DoubaoWork/Default/.doubaowork/agent_mode/workspace/.user_skills`,同步两项完整技能;安装器不替用户创建猜测的宿主路径。其他平台、不同用户配置或远端运行时,应使用当前豆包环境实际提供的目录:
|
|
192
191
|
|
|
193
192
|
```bash
|
|
194
193
|
EVERYLINE_DOUBAO_SKILLS_DIR="<豆包实际技能根目录的绝对路径>" npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli <发布包.tgz>
|
|
@@ -196,23 +195,22 @@ EVERYLINE_DOUBAO_SKILLS_DIR="<豆包实际技能根目录的绝对路径>" npm i
|
|
|
196
195
|
|
|
197
196
|
本地同步会比较内容而非只比较版本号,更新 `SKILL.md` 和全部 `references/`;旧目录保留在扫描目录外,出错时回滚本轮各宿主的变更。同名目录未声明对应 EveryLine 技能、含符号链接或特殊文件时,保留原目录并报告冲突。`EVERYLINE_SKIP_DOUBAO_SKILL_INSTALL=1` 跳过豆包,`EVERYLINE_SKIP_SKILL_INSTALL=1` 跳过全部宿主。
|
|
198
197
|
|
|
199
|
-
同步事件 `event=skills_updated / host=doubao / nextAction=reload_skills` 表示文件更新成功;Agent 应重新读取 `skills[].target`
|
|
198
|
+
同步事件 `event=skills_updated / host=doubao / nextAction=reload_skills` 表示文件更新成功;Agent 应重新读取 `skills[].target` 下的两项 `SKILL.md`,或新建任务加载。历史对话不自动替换旧内容。云端导入副本尚未接入自动发布;该路径仍使用 ZIP。仓库执行 `make skill-assets` 后生成:
|
|
200
199
|
|
|
201
200
|
```text
|
|
202
|
-
dist/everyline-cli-skill.zip
|
|
203
201
|
dist/everyline-review-skill.zip
|
|
204
202
|
dist/everyline-review-config-skill.zip
|
|
205
203
|
```
|
|
206
204
|
|
|
207
|
-
每个 ZIP 根目录都直接包含自己的 `SKILL.md`;审查和配置 ZIP 还包含对应 `references/`。构建过程会清理旧的 `dist/everyline-shared-skill.zip`,避免重复导入公共授权入口。
|
|
205
|
+
每个 ZIP 根目录都直接包含自己的 `SKILL.md`;审查和配置 ZIP 还包含对应 `references/`。构建过程会清理旧的 `dist/everyline-shared-skill.zip` 和 `dist/everyline-cli-skill.zip`,避免重复导入公共授权入口。
|
|
208
206
|
|
|
209
207
|
在豆包中安装:
|
|
210
208
|
|
|
211
209
|
1. 打开豆包工作任务的「技能·连接器·伙伴 → 我的技能 → 上传技能」。
|
|
212
|
-
2.
|
|
213
|
-
3.
|
|
214
|
-
4. 远端沙箱准备对应 Linux CLI,并按 `everyline-
|
|
215
|
-
5. 首次验证时发送「刚首次导入 EveryLine
|
|
210
|
+
2. 依次上传两个 ZIP,确认解析名称分别为 `everyline-review`、`everyline-review-config`。
|
|
211
|
+
3. 启用两项 Skill 并新建任务验证;ZIP 应作为 Skill 导入,不作为普通聊天附件总结。
|
|
212
|
+
4. 远端沙箱准备对应 Linux CLI,并按 `everyline-review` 的公共接入流程提供 Device Grant 的会话变量;合同通过附件字节流、沙箱内路径或完整 URL 交付。
|
|
213
|
+
5. 首次验证时发送「刚首次导入 EveryLine 的两项 Skill,请验证 CLI 和 Skill 已就绪并展示安装完成提示,先不要发起授权」。CLI 尚未安装时在同一请求中补充安装要求;确认 CLI 可执行后,豆包应在回复正文展示上述统一文案,即使 `version` 没有首次安装字段。
|
|
216
214
|
|
|
217
215
|
豆包的 Skill 功能和入口仍在快速更新;本手册以客户端存在“上传技能”为前提。当前客户端只有“对话新建技能”时,应等待或启用本地 Skill 上传入口,避免把 `SKILL.md` 正文复制成缺少 references 的不完整技能。
|
|
218
216
|
|
|
@@ -226,34 +224,34 @@ dist/everyline-review-config-skill.zip
|
|
|
226
224
|
/skills
|
|
227
225
|
```
|
|
228
226
|
|
|
229
|
-
预期列表中出现 `everyline-
|
|
227
|
+
预期列表中出现 `everyline-review` 和 `everyline-review-config`。
|
|
230
228
|
|
|
231
229
|
如果目录已经正确但列表尚未刷新,重启 Codex 后再检查。官方文档说明 Codex 支持自动检测 Skill 变化,未出现时可通过重启刷新。
|
|
232
230
|
|
|
233
231
|
先运行一个不上传合同的冒烟验证:
|
|
234
232
|
|
|
235
233
|
```text
|
|
236
|
-
$everyline-
|
|
234
|
+
$everyline-review 使用当前 prod-user Profile 和 user 身份检查 CLI 版本和授权状态,先不要上传合同。
|
|
237
235
|
```
|
|
238
236
|
|
|
239
237
|
预期行为:Codex 检查 `everyline-cli` 路径、版本、两条任务命令的帮助信息和授权状态,解析当前 `prod-user` Profile,并在后续调用中固定传入该 Profile 与 user 身份;不要求填写 `businessId`、`fileHash` 等内部字段。
|
|
240
238
|
|
|
241
239
|
### 4.2 WorkBuddy
|
|
242
240
|
|
|
243
|
-
重新打开 WorkBuddy
|
|
241
|
+
重新打开 WorkBuddy 任务,在「专家·技能·连接器」中确认两项 EveryLine Skill 已启用。先发送:
|
|
244
242
|
|
|
245
243
|
```text
|
|
246
|
-
使用 everyline-
|
|
244
|
+
使用 everyline-review 技能,检查 CLI 路径、版本和当前授权状态,先不要上传合同。
|
|
247
245
|
```
|
|
248
246
|
|
|
249
247
|
预期 WorkBuddy 执行真实 CLI 命令并返回结构化检查结果,而不是只复述安装文档。WorkBuddy 中不需要前往 Codex 执行 `/skills`。
|
|
250
248
|
|
|
251
249
|
### 4.3 豆包电脑版
|
|
252
250
|
|
|
253
|
-
|
|
251
|
+
在豆包「我的技能」中确认两项 EveryLine Skill 已启用,再新建工作任务并发送:
|
|
254
252
|
|
|
255
253
|
```text
|
|
256
|
-
使用 everyline-
|
|
254
|
+
使用 everyline-review 技能,执行 command -v everyline-cli 和 everyline-cli version --output json;再检查当前授权状态,先不要上传合同。
|
|
257
255
|
```
|
|
258
256
|
|
|
259
257
|
继续条件:豆包实际返回命令路径和 CLI JSON 版本,不只是描述应该执行哪些命令。找不到命令时,先让豆包本地任务环境包含 npm 全局 bin 或 `$HOME/.local/bin`,然后重新打开任务。
|
|
@@ -472,7 +470,7 @@ $everyline-review 使用 prod-user Profile 和 user 身份审查 /absolute/path/
|
|
|
472
470
|
|
|
473
471
|
| 检查项 | 通过标准 |
|
|
474
472
|
| --- | --- |
|
|
475
|
-
| Skill 发现 | 三个宿主中均出现 `everyline-
|
|
473
|
+
| Skill 发现 | 三个宿主中均出现 `everyline-review`、`everyline-review-config` |
|
|
476
474
|
| CLI 发现 | `everyline-cli version --output json` 成功,版本符合预期 |
|
|
477
475
|
| 调用上下文 | 所有授权和业务命令显式使用同一 `--profile/--as` |
|
|
478
476
|
| 授权 | `auth status` 返回 `authenticated=true` |
|
|
@@ -493,7 +491,7 @@ $everyline-review 使用 prod-user Profile 和 user 身份审查 /absolute/path/
|
|
|
493
491
|
|
|
494
492
|
### `/skills` 中缺少拆分后的 EveryLine Skill
|
|
495
493
|
|
|
496
|
-
- 检查 `$HOME/.agents/skills/everyline-
|
|
494
|
+
- 检查 `$HOME/.agents/skills/everyline-review/SKILL.md` 和 `everyline-review-config/SKILL.md`。
|
|
497
495
|
- 检查是否误生成同名双层目录。
|
|
498
496
|
- 重启 Codex 后重新执行 `/skills`。
|
|
499
497
|
|
|
@@ -505,7 +503,7 @@ $everyline-review 使用 prod-user Profile 和 user 身份审查 /absolute/path/
|
|
|
505
503
|
|
|
506
504
|
### 豆包上传技能后只解释文档,没有执行 CLI
|
|
507
505
|
|
|
508
|
-
-
|
|
506
|
+
- 确认两个 ZIP 都通过上传入口安装成技能,而不是作为普通聊天附件。
|
|
509
507
|
- 让豆包实际执行 `command -v everyline-cli` 和 `everyline-cli version --output json`。
|
|
510
508
|
- 检查沙箱 Linux CLI、命令执行权限、Device Grant 会话变量和 PATH;通过后再上传合同。
|
|
511
509
|
|
|
@@ -519,7 +517,7 @@ $everyline-review 使用 prod-user Profile 和 user 身份审查 /absolute/path/
|
|
|
519
517
|
|
|
520
518
|
解析 `version --output json`。`updateRequired=true` 时先记住 `updateCommand`,继续完成当前完整业务流程;CLI 同时会在 stderr 输出 `code=UPDATE_PENDING`、当前版本、最新版本、更新命令和 `updateAfter=current_business_workflow`。全部业务 API 结束并保留结果后原样执行一次更新命令,再次检查版本;下一条新业务重新加载新版 Skill。
|
|
521
519
|
|
|
522
|
-
CLI
|
|
520
|
+
CLI 与两项 Skill 更新并校验成功后展示“EveryLine CLI 已更新完成。目前支持合同审查,以及审查清单、规则和规则分组配置。”,复用同次授权中用户已选的身份;尚未选择时先单选 user/app,再对匹配的 Profile 和身份执行一次 `auth status`。只有 `authenticated=true` 时追加“当前已存在生效授权,可直接调用cli能力;”;`authenticated=false` 时追加“使用前需要先完成账号授权,我现在可以为你打开授权页面或生成授权链接。”,已有继续授权请求时直接按已选身份继续,否则等待用户确认。状态查询报错时保留未知状态并报告原始错误,不从 token 文件或安装成功推断授权有效。
|
|
523
521
|
|
|
524
522
|
### 提示尚未选择 Profile
|
|
525
523
|
|
|
@@ -557,7 +555,7 @@ npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli ./ever
|
|
|
557
555
|
everyline-cli version --output json
|
|
558
556
|
```
|
|
559
557
|
|
|
560
|
-
也可以将 tgz 作为工作任务附件提供,然后告诉 Agent:“使用 everyline-
|
|
558
|
+
也可以将 tgz 作为工作任务附件提供,然后告诉 Agent:“使用 everyline-review 技能,按附件 tgz 更新 CLI 和两项 Skill,不从 npm 查询最新版。”即使包版本相同,也按指定包安装并同步可管理的 Skill 内容;无需该包先发布到 npm。
|
|
561
559
|
|
|
562
560
|
**从 npm 更新到最新版**:
|
|
563
561
|
|
|
@@ -566,9 +564,9 @@ npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli @qfeiu
|
|
|
566
564
|
everyline-cli version --output json
|
|
567
565
|
```
|
|
568
566
|
|
|
569
|
-
或告诉 Agent:“使用 everyline-
|
|
567
|
+
或告诉 Agent:“使用 everyline-review 技能,从 npm 更新 CLI 和两项 Skill。”此方式要求对应版本已经发布到 npm。两种方式都保留原安装 prefix 和账号配置,并在更新后核对 CLI 与两项 Skill 版本;自定义 prefix 复用下文命令。
|
|
570
568
|
|
|
571
|
-
Codex、WorkBuddy 和已发现的豆包本地技能目录随 npm
|
|
569
|
+
Codex、WorkBuddy 和已发现的豆包本地技能目录随 npm 安装同步,更新后新建任务加载。豆包云端手动导入版需重新导入两项 Skill ZIP;客户端提供的附件路径必须能被执行环境读取。
|
|
572
570
|
|
|
573
571
|
|
|
574
572
|
使用 npm 标准全局目录时更新 CLI:
|
|
@@ -592,9 +590,9 @@ $EverylineNpmPrefix = Join-Path $HOME ".local"
|
|
|
592
590
|
npm install -g --allow-scripts=@qfeius/everyline-cli --prefix $EverylineNpmPrefix @qfeius/everyline-cli@NEW_RELEASE_VERSION
|
|
593
591
|
```
|
|
594
592
|
|
|
595
|
-
macOS/Linux 使用符号链接、Windows 使用目录联接时,Codex 与 WorkBuddy
|
|
593
|
+
macOS/Linux 使用符号链接、Windows 使用目录联接时,Codex 与 WorkBuddy 的两项 Skill 都指向新 npm 包中的同名目录。已发现或显式配置的豆包本地目录同步完整文件夹,两项技能的引用文件也会更新。云端导入版仍通过 `make skill-assets` 生成并上传两个新 ZIP。
|
|
596
594
|
|
|
597
|
-
豆包更新后应区分“本地文件已同步”和“当前任务已重新加载”。以 `skills_updated`
|
|
595
|
+
豆包更新后应区分“本地文件已同步”和“当前任务已重新加载”。以 `skills_updated` 事件的目标路径核对两项实际文件,再重新读取或新建任务;只查看 npm 包内文件或 CLI 版本不算验证加载成功。未发现豆包目录、云端导入版或内容尚未核实时,应报告仍待更新/验证,使用实际目录重装或通过两个独立 ZIP 更新,外层完整发布 ZIP 和 npm `.tgz` 不作为豆包 Skill 导入包。
|
|
598
596
|
|
|
599
597
|
### 只从某一个宿主移除 Skill
|
|
600
598
|
|
|
@@ -603,7 +601,7 @@ macOS/Linux 使用符号链接、Windows 使用目录联接时,Codex 与 WorkB
|
|
|
603
601
|
Codex 的 macOS/Linux 符号链接:
|
|
604
602
|
|
|
605
603
|
```bash
|
|
606
|
-
for skill_name in everyline-
|
|
604
|
+
for skill_name in everyline-review everyline-review-config; do
|
|
607
605
|
unlink "$HOME/.agents/skills/$skill_name"
|
|
608
606
|
done
|
|
609
607
|
```
|
|
@@ -611,14 +609,14 @@ done
|
|
|
611
609
|
WorkBuddy 的符号链接卸载:
|
|
612
610
|
|
|
613
611
|
```bash
|
|
614
|
-
for skill_name in everyline-
|
|
612
|
+
for skill_name in everyline-review everyline-review-config; do
|
|
615
613
|
unlink "$HOME/.workbuddy/skills/$skill_name"
|
|
616
614
|
done
|
|
617
615
|
```
|
|
618
616
|
|
|
619
|
-
|
|
617
|
+
豆包在「我的技能」中分别移除两项 Skill;不手工删除豆包客户端内部数据目录,也不因此卸载其他宿主仍在使用的 CLI。
|
|
620
618
|
|
|
621
|
-
Windows 目录联接在确认路径后,分别对两个宿主下的 `everyline-
|
|
619
|
+
Windows 目录联接在确认路径后,分别对两个宿主下的 `everyline-review`、`everyline-review-config` 执行 `Remove-Item`。WorkBuddy 通过界面安装时,也只在其「专家·技能·连接器」中移除对应技能。
|
|
622
620
|
|
|
623
621
|
### 全局卸载 CLI 和 npm 包
|
|
624
622
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# EveryLine CLI Skill 全量交互场景
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
本文以当前两项 Skill 为行为基线:`skills/everyline-review/` 负责公共接入、授权与单份合同审查,`skills/everyline-review-config/` 负责清单与规则管理。本文梳理已经定义的全部用户交互、分支、停止条件和当前范围外能力,可用于产品评审、验收测试和其他设备上的对话验证。
|
|
4
4
|
|
|
5
5
|
## 1. 场景状态说明
|
|
6
6
|
|
|
@@ -69,7 +69,7 @@ flowchart TD
|
|
|
69
69
|
|
|
70
70
|
| ID | 状态 | 用户示例 | Skill 处理 | 结束条件 |
|
|
71
71
|
| --- | --- | --- | --- | --- |
|
|
72
|
-
| ENTRY-01 | 已支持 | `$everyline-
|
|
72
|
+
| ENTRY-01 | 已支持 | `$everyline-review 帮我审查合同` | 显式加载 Skill,识别为合同审查 | 进入首次使用检查 |
|
|
73
73
|
| ENTRY-02 | 已支持 | `用 EveryLine CLI 看一下这份合同` | description 唯一匹配时隐式加载 | 进入首次使用检查 |
|
|
74
74
|
| ENTRY-03 | 已支持 | `帮我操作普通智书 contract-cli` | 根据 Skill 边界不接管 | 交由其他能力处理 |
|
|
75
75
|
| READY-01 | 已支持 | 新会话首次调用 | 执行 `command -v`、`version --output json` 和根帮助;解析首次安装授权字段 | 命令和版本可读取 |
|
|
@@ -81,10 +81,10 @@ flowchart TD
|
|
|
81
81
|
| READY-07 | 受限 | CLI 未说明清单与内置规则包可组合 | 不假设组合语义,不上传合同 | 停止合同审查 |
|
|
82
82
|
| READY-08 | 受限 | `review task result --help` 未提供等待最终结果能力 | 不自行模拟任务状态机 | 停止合同审查 |
|
|
83
83
|
| READY-09 | 已支持 | `firstInstall=true` 且 `authorizationRequired=true` | 展示首次安装引导,先让用户选择身份再匹配 Profile 并进入强制新授权流程;不接受旧 dev token,不调用业务 API | 新授权成功并返回 `authorizationRequired=false` |
|
|
84
|
-
| READY-10 | 已支持 | CLI
|
|
84
|
+
| READY-10 | 已支持 | CLI 与两项 Skill 更新成功 | 展示统一更新完成文案,复用同次授权已选身份;尚未选择时先单选,再对匹配的 Profile/身份执行一次 `auth status` | 进入唯一一个授权状态分支 |
|
|
85
85
|
| READY-11 | 已支持 | 更新后 `authenticated=false` | 展示“使用前需要先完成账号授权,我现在可以为你打开授权页面或生成授权链接。”;已有继续授权请求时直接继续,否则等待用户确认 | 使用已选身份按宿主进入授权流程 |
|
|
86
86
|
| READY-12 | 已支持 | 更新后 `authenticated=true` | 提示当前授权生效且可直接调用 CLI | 当前请求结束或进入下一项业务 |
|
|
87
|
-
| READY-13 | 已支持 | Codex/WorkBuddy 首次 npm 安装成功,但日志未显示安装器文案 | 检查 `version --output json`
|
|
87
|
+
| READY-13 | 已支持 | Codex/WorkBuddy 首次 npm 安装成功,但日志未显示安装器文案 | 检查 `version --output json` 和两项 Skill,按本次安装事实在最终回复正文补齐统一文案 | 用户看到能力介绍及打开授权页面或生成授权链接的提示 |
|
|
88
88
|
| READY-14 | 已支持 | 豆包/WorkBuddy 界面首次导入,`version` 未提供首次安装字段或字段为 false | 依据宿主明确的首次导入上下文或用户首次使用说明,确认 CLI 可用后展示统一文案 | 提示展示一次,等待用户选择身份 |
|
|
89
89
|
| READY-15 | 已支持 | 同次对话从公共 Skill 进入审查或配置 Skill | 复用公共 Skill 的提示展示记录和已选身份 | 不重复介绍,不丢失原业务目标 |
|
|
90
90
|
|
|
@@ -306,16 +306,16 @@ flowchart TD
|
|
|
306
306
|
|
|
307
307
|
以下最小集合可覆盖主要分支:
|
|
308
308
|
|
|
309
|
-
1. `$everyline-
|
|
310
|
-
2. 在消息中附加一份合同并发送:`$everyline-
|
|
311
|
-
3. `$everyline-
|
|
312
|
-
4. `$everyline-
|
|
313
|
-
5. `$everyline-
|
|
314
|
-
6. `$everyline-
|
|
315
|
-
7. `$everyline-
|
|
316
|
-
8. `$everyline-
|
|
317
|
-
9. `$everyline-
|
|
318
|
-
10. `$everyline-
|
|
319
|
-
11. `$everyline-
|
|
309
|
+
1. `$everyline-review 使用 test-user Profile 和 user 身份检查授权状态,先不要上传文件。`
|
|
310
|
+
2. 在消息中附加一份合同并发送:`$everyline-review 使用 test-user Profile 和 user 身份审查这个附件;强度中立。`
|
|
311
|
+
3. `$everyline-review 使用 test-user Profile 和 user 身份审查 /absolute/path/合同.pdf。`
|
|
312
|
+
4. `$everyline-review 使用 test-user Profile 和 user 身份审查 https://example.test/合同.pdf;使用内置规则包;强度中立。`
|
|
313
|
+
5. `$everyline-review 列出我可用的自定义审查清单和其中的规则。`
|
|
314
|
+
6. `$everyline-review 创建一个采购合同审查清单。`
|
|
315
|
+
7. `$everyline-review 给“采购合同清单”增加“付款条件风险”规则。`
|
|
316
|
+
8. `$everyline-review 删除“采购合同清单”。`
|
|
317
|
+
9. `$everyline-review 创建一条付款条件风险规则。`
|
|
318
|
+
10. `$everyline-review 删除一条仍被清单引用的规则。`
|
|
319
|
+
11. `$everyline-review 删除包含多条规则的规则分组。`
|
|
320
320
|
|
|
321
321
|
验收时应同时覆盖确认、取消、名称重复、无匹配、授权失败、版本能力缺失、计费异常、发起超时无 task ID、成功无详情链接等分支。
|
package/docs/npm-release.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# EveryLine Cli npm 发布
|
|
2
2
|
|
|
3
|
-
npm 包名为 `@qfeius/everyline-cli
|
|
3
|
+
npm 包名为 `@qfeius/everyline-cli`,终端命令和两项 Skill 名称保持不变。公共源固定为 `https://registry.npmjs.org/`。生成 `.tgz`、推送源码与发布 npm 是三个独立步骤,只有发布成功后才能通过包名安装。
|
|
4
4
|
|
|
5
5
|
## 一次性配置
|
|
6
6
|
|
|
7
|
-
1.
|
|
8
|
-
2.
|
|
7
|
+
1. 在 npm 包的 Trusted Publisher 中配置 GitHub 仓库 `qfeius/everyline-cli` 和工作流 `npm-publish.yml`,供 OIDC 发布。确认 npm 账号有 `@qfeius` 下此包的发布权限。首次发布前先检查组织权限和包名归属。
|
|
8
|
+
2. npm 发布使用 OIDC 临时身份,无需为 GitHub Release 配置 `NPM_TOKEN`。
|
|
9
9
|
3. 将 `.github/workflows/release.yml` 推送到 GitHub。工作流使用 GitHub 自动提供的 token 创建 Release,无需另配 GitHub token。
|
|
10
10
|
|
|
11
11
|
Token 权限说明:[npm CI/CD 文档](https://docs.npmjs.com/using-private-packages-in-a-ci-cd-workflow/)。
|
|
@@ -13,7 +13,7 @@ Token 权限说明:[npm CI/CD 文档](https://docs.npmjs.com/using-private-pac
|
|
|
13
13
|
## 发布步骤
|
|
14
14
|
|
|
15
15
|
1. 在准备发布的分支更新 `package.json.version`。正式版如 `0.0.8`,预发布版如 `0.0.8-beta.1`。已发布版本不能覆盖。
|
|
16
|
-
2. 执行 `make release-check
|
|
16
|
+
2. 执行 `make release-check`。构建脚本会同步两项 Skill 的版本;提交版本及相关改动。
|
|
17
17
|
3. 创建并推送与包版本完全一致的标签,例如:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
@@ -24,7 +24,7 @@ git push github v0.0.8
|
|
|
24
24
|
|
|
25
25
|
上例中的版本须替换为本次版本。`github` 为本仓库指向 GitHub 的远端名称。
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
标签触发两条独立工作流:`release.yml` 校验版本、运行测试和安装校验,发布 GitHub 原生二进制制品、npm 安装包和两项 Skill ZIP;`npm-publish.yml` 通过 OIDC 发布 npm。GitHub 制品发布不依赖 NPM_TOKEN。正式版发布到 `latest`;预发布版使用版本后缀首段作为 dist-tag,例如 `test.1` 使用 `test`。
|
|
28
28
|
|
|
29
29
|
GitLab 流水线继续负责测试、构建和保存 `.tgz`,不重复发布 npm。
|
|
30
30
|
|
|
@@ -37,7 +37,7 @@ npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli @qfeiu
|
|
|
37
37
|
everyline-cli version --output json
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
预发布版将 `@latest`
|
|
40
|
+
预发布版将 `@latest` 替换为对应 dist-tag,例如 `@test`。安装包内含六个平台的二进制,不需要再次从 GitHub 下载。
|
|
41
41
|
|
|
42
42
|
尚未发布到 npm 时,使用构建后的本地包:
|
|
43
43
|
|
|
@@ -46,7 +46,7 @@ make package
|
|
|
46
46
|
npm install -g --foreground-scripts --allow-scripts=@qfeius/everyline-cli "./dist/everyline-cli-<版本>.tgz"
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
`make package` 每次先将补丁版本递增一位(例如 `0.0.7 → 0.0.8
|
|
49
|
+
`make package` 每次先将补丁版本递增一位(例如 `0.0.7 → 0.0.8`),再同步两项 Skill、重新构建六个平台的二进制并生成 `.tgz`;不会提交代码、创建 Git 标签或发布到 npm。若当前是预发布版本,按 npm 的 patch 规则转为对应正式版本。文件名中的版本以实际产物为准。日常交付使用 `make package`;`npm pack` 仅用于 CI 已固定版本的发布和内部校验,不自动升版。两个 `*-skill.zip` 是 Skill 导入包,不替代 CLI 安装包。
|
|
50
50
|
|
|
51
51
|
## 从旧包名迁移
|
|
52
52
|
|
|
@@ -64,7 +64,7 @@ everyline-cli version --output json
|
|
|
64
64
|
|
|
65
65
|
## 发布失败
|
|
66
66
|
|
|
67
|
-
-
|
|
67
|
+
- npm OIDC 身份校验失败:核对 npm Trusted Publisher 配置的仓库与 `npm-publish.yml` 工作流名称。
|
|
68
68
|
- npm 403:核对 scope、包写权限、token 有效期及非交互发布权限。
|
|
69
69
|
- 版本已存在:不要覆盖;核对已发布结果,需要变更时提升版本并创建新标签。
|
|
70
70
|
- GitHub Release 已生成但 npm 发布失败:npm 包尚未发布成功;解决错误后可安装 Release 中的 `.tgz`,再处理 npm 发布。不要仅凭 Release 存在宣称 npm 已可安装。
|
package/package.json
CHANGED
package/scripts/install.js
CHANGED
|
@@ -18,8 +18,8 @@ const { basename, dirname, join, resolve } = require("node:path");
|
|
|
18
18
|
const { resolvePlatformTarget } = require("./platform");
|
|
19
19
|
const { buildDoubaoSkillPlans, inspectDoubaoSkillRegistration, installDoubaoSkill, finishDoubaoSkill } = require("./doubao-skills");
|
|
20
20
|
|
|
21
|
-
// skillNames 是同一份 npm 包向 Codex、WorkBuddy
|
|
22
|
-
const skillNames = ["everyline-
|
|
21
|
+
// skillNames 是同一份 npm 包向 Codex、WorkBuddy 和豆包发布的两项职责分离 Skill。
|
|
22
|
+
const skillNames = ["everyline-review", "everyline-review-config"];
|
|
23
23
|
const deprecatedSkillNames = ["everyline-shared"];
|
|
24
24
|
const installStateSchema = "everyline.install-state.v1";
|
|
25
25
|
// 安装提示与 Agent 事件共用文案;先说明可协助授权,用户要求登录后再选择 user/app。
|
|
@@ -211,7 +211,7 @@ function registerAgentSkill(source, target, platform = process.platform, hostNam
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
/**
|
|
214
|
-
* buildSkillSetPlans
|
|
214
|
+
* buildSkillSetPlans 构造一个宿主下两项职责分离 Skill 的无副作用登记计划。
|
|
215
215
|
* 入参:packageRoot(string)为 npm 包根目录;skillRoot(string)为宿主 Skill 根目录;hostName(string)为宿主名;hostKey(string)为返回结果分组键。
|
|
216
216
|
* 返回值:Array<object>,每项包含来源、目标、Skill 名称和宿主分组。
|
|
217
217
|
*/
|
|
@@ -235,7 +235,7 @@ function registerCodexSkill(source, target, platform = process.platform) {
|
|
|
235
235
|
}
|
|
236
236
|
|
|
237
237
|
/**
|
|
238
|
-
* registerSkillSet
|
|
238
|
+
* registerSkillSet 将职责分离的两项 EveryLine Skill 登记到一个宿主根目录。
|
|
239
239
|
* 入参:packageRoot(string)为 npm 包根目录;skillRoot(string)为宿主 Skill 根目录;platform(string)为 Node 平台名;hostName(string)为宿主名。
|
|
240
240
|
* 返回值:Array<object>,每项包含 name、target 和 created/existing/updated 状态。
|
|
241
241
|
*/
|
|
@@ -453,7 +453,7 @@ function formatInstallOutput(result) {
|
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
455
|
if (result.doubaoSkillReloadRequired) {
|
|
456
|
-
lines.push("豆包本地 Skill
|
|
456
|
+
lines.push("豆包本地 Skill 已同步;请重新读取两项 SKILL.md,或新建任务加载新版。历史对话不会自动重载。");
|
|
457
457
|
lines.push(JSON.stringify({
|
|
458
458
|
schema: "everyline.skill-event.v1", event: "skills_updated", host: "doubao",
|
|
459
459
|
reloadRequired: true, nextAction: "reload_skills", skills: result.skills.doubao,
|
|
@@ -465,7 +465,7 @@ function formatInstallOutput(result) {
|
|
|
465
465
|
event: "updated",
|
|
466
466
|
authCheckRequired: true,
|
|
467
467
|
nextAction: "auth_status",
|
|
468
|
-
recommendedSkill: "everyline-
|
|
468
|
+
recommendedSkill: "everyline-review",
|
|
469
469
|
message: updateMessage,
|
|
470
470
|
authorizationRequiredMessage,
|
|
471
471
|
authorizedMessage,
|
|
@@ -476,7 +476,7 @@ function formatInstallOutput(result) {
|
|
|
476
476
|
event: "first_install",
|
|
477
477
|
authorizationRequired: true,
|
|
478
478
|
nextAction: "authorize",
|
|
479
|
-
recommendedSkill: "everyline-
|
|
479
|
+
recommendedSkill: "everyline-review",
|
|
480
480
|
message: firstInstallMessage,
|
|
481
481
|
}));
|
|
482
482
|
}
|
|
@@ -4,7 +4,7 @@ const { join } = require("node:path");
|
|
|
4
4
|
const { normalizePackageVersion } = require("./package-version");
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* syncSkillVersions
|
|
7
|
+
* syncSkillVersions 将安装包版本写入两项 Skill 的 metadata。
|
|
8
8
|
* 入参:root string 为包根目录。
|
|
9
9
|
* 返回值:无;版本或 frontmatter 无效时抛出错误,阻止发布。
|
|
10
10
|
*/
|
|
@@ -14,7 +14,7 @@ function syncSkillVersions(root) {
|
|
|
14
14
|
throw new Error(`无效发布版本: ${version}`);
|
|
15
15
|
}
|
|
16
16
|
// 先验证全部文件再写入,避免其中一项格式异常造成部分同步。
|
|
17
|
-
const changes = ["everyline-
|
|
17
|
+
const changes = ["everyline-review", "everyline-review-config"].map(name => {
|
|
18
18
|
const path = join(root, "skills", name, "SKILL.md");
|
|
19
19
|
const source = readFileSync(path, "utf8");
|
|
20
20
|
const match = source.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|