flower-trellis 0.6.0-beta.4 → 0.6.0-beta.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/enhancements/0.6/.agents/skills/trellis-flower-update/SKILL.md +38 -0
- package/enhancements/0.6/.claude/skills/trellis-flower-update/SKILL.md +38 -0
- package/enhancements/MANIFEST.json +4 -2
- package/enhancements/common/.common/.claude/skills/aliyun-sls-query/SKILL.md +2 -0
- package/enhancements/common/.common/.codex/skills/aliyun-sls-query/SKILL.md +2 -0
- package/package.json +3 -3
- package/src/cli.js +3 -2
- package/src/commands/self-check.js +4 -1
- package/src/commands/self-update.js +1 -0
- package/src/lib/skill-catalog.js +2 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trellis-flower-update
|
|
3
|
+
description: "手动检查和执行已安装 Flower/Trellis 强化包升级。用于用户明确要求更新或升级 flower-trellis、Flower、Trellis 强化包、skill-garden 快照、项目 flower 版本追平,或自动更新提示被稍后/跳过后仍想在对话里升级时。不要用于用户说想发版、发布版本、release、打 tag、npm publish 或修改 package 版本号;这些属于项目发版流程。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Trellis Flower Update
|
|
7
|
+
|
|
8
|
+
用于用户主动要求升级已安装的 Flower/Trellis 强化层时。自动 SessionStart 提示的 snooze、skip 和 cooldown 只是不主动打扰,不能阻止用户显式要求升级。
|
|
9
|
+
|
|
10
|
+
本 skill 不是发版入口。用户说“我想发版了”、release、打 tag、npm publish、更新 package 版本号或准备发布包时,不使用本 skill;按当前项目的 release SOP、`trellis-release` 或发布规范处理。
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
1. 确认目标项目。用户给出路径时使用该路径,否则使用当前工作目录。
|
|
15
|
+
2. 运行人工检查,默认强制刷新远端版本证据:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
flower-trellis self-check --json --manual --force-remote --target <target>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
3. 解析 JSON:
|
|
22
|
+
- `update_available`:展示当前版本、推荐版本、release notes 摘要和 `commands.recommended`。
|
|
23
|
+
- `project_out_of_sync`:展示当前 Flower/Trellis 与项目记录的差异,并展示 `commands.recommended`。
|
|
24
|
+
- `up_to_date`:说明当前安装和项目记录已一致。
|
|
25
|
+
- `disabled` / `offline` / `skipped`:说明原因;不要靠重置缓存伪造可执行状态。
|
|
26
|
+
4. 写入前遵守确认和安全门槛:
|
|
27
|
+
- 用户当前消息已经明确要求执行升级时,可以执行 `commands.recommended`。
|
|
28
|
+
- 用户只是询问、查看或比较版本时,只展示结果并等待确认。
|
|
29
|
+
- `safety.reasons` 非空时,先说明风险,再等待用户明确确认。
|
|
30
|
+
5. 执行推荐命令后读取 `<flower-update-result>`。如果结果要求 `run_trellis_push_confirmation`,进入 `trellis-push`,展示文件和 commit message 后等待确认。
|
|
31
|
+
|
|
32
|
+
## Rules
|
|
33
|
+
|
|
34
|
+
- 不直接读写 `.flower/update-check.tmp`。
|
|
35
|
+
- 不使用 `update-check reset`、`snooze` 或 `skip` 作为升级绕过手段。
|
|
36
|
+
- 不运行 `npm run release`、不打 tag、不 publish,也不修改 `package.json` 版本号。
|
|
37
|
+
- 不把 `self-check --manual` 用在 SessionStart 自动 hook;自动路径必须继续尊重提示节流。
|
|
38
|
+
- 目标项目有脏文件、活动任务或命令缺失时,按 `safety.reasons` 报告并等待用户确认。
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trellis-flower-update
|
|
3
|
+
description: "手动检查和执行已安装 Flower/Trellis 强化包升级。用于用户明确要求更新或升级 flower-trellis、Flower、Trellis 强化包、skill-garden 快照、项目 flower 版本追平,或自动更新提示被稍后/跳过后仍想在对话里升级时。不要用于用户说想发版、发布版本、release、打 tag、npm publish 或修改 package 版本号;这些属于项目发版流程。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Trellis Flower Update
|
|
7
|
+
|
|
8
|
+
用于用户主动要求升级已安装的 Flower/Trellis 强化层时。自动 SessionStart 提示的 snooze、skip 和 cooldown 只是不主动打扰,不能阻止用户显式要求升级。
|
|
9
|
+
|
|
10
|
+
本 skill 不是发版入口。用户说“我想发版了”、release、打 tag、npm publish、更新 package 版本号或准备发布包时,不使用本 skill;按当前项目的 release SOP、`trellis-release` 或发布规范处理。
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
1. 确认目标项目。用户给出路径时使用该路径,否则使用当前工作目录。
|
|
15
|
+
2. 运行人工检查,默认强制刷新远端版本证据:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
flower-trellis self-check --json --manual --force-remote --target <target>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
3. 解析 JSON:
|
|
22
|
+
- `update_available`:展示当前版本、推荐版本、release notes 摘要和 `commands.recommended`。
|
|
23
|
+
- `project_out_of_sync`:展示当前 Flower/Trellis 与项目记录的差异,并展示 `commands.recommended`。
|
|
24
|
+
- `up_to_date`:说明当前安装和项目记录已一致。
|
|
25
|
+
- `disabled` / `offline` / `skipped`:说明原因;不要靠重置缓存伪造可执行状态。
|
|
26
|
+
4. 写入前遵守确认和安全门槛:
|
|
27
|
+
- 用户当前消息已经明确要求执行升级时,可以执行 `commands.recommended`。
|
|
28
|
+
- 用户只是询问、查看或比较版本时,只展示结果并等待确认。
|
|
29
|
+
- `safety.reasons` 非空时,先说明风险,再等待用户明确确认。
|
|
30
|
+
5. 执行推荐命令后读取 `<flower-update-result>`。如果结果要求 `run_trellis_push_confirmation`,进入 `trellis-push`,展示文件和 commit message 后等待确认。
|
|
31
|
+
|
|
32
|
+
## Rules
|
|
33
|
+
|
|
34
|
+
- 不直接读写 `.flower/update-check.tmp`。
|
|
35
|
+
- 不使用 `update-check reset`、`snooze` 或 `skip` 作为升级绕过手段。
|
|
36
|
+
- 不运行 `npm run release`、不打 tag、不 publish,也不修改 `package.json` 版本号。
|
|
37
|
+
- 不把 `self-check --manual` 用在 SessionStart 自动 hook;自动路径必须继续尊重提示节流。
|
|
38
|
+
- 目标项目有脏文件、活动任务或命令缺失时,按 `safety.reasons` 报告并等待用户确认。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"syncedAt": "2026-08-
|
|
2
|
+
"syncedAt": "2026-08-04T12:07:53.744Z",
|
|
3
3
|
"syncedFrom": "vendor/skill-garden",
|
|
4
|
-
"sourceCommit": "
|
|
4
|
+
"sourceCommit": "634fdd29a3110498b74494cdecceb4a181363e77",
|
|
5
5
|
"common": {
|
|
6
6
|
"codexSkills": [
|
|
7
7
|
"aliyun-sls-query",
|
|
@@ -105,6 +105,7 @@
|
|
|
105
105
|
"trellis-create-command",
|
|
106
106
|
"trellis-diff-brief",
|
|
107
107
|
"trellis-extract-prd",
|
|
108
|
+
"trellis-flower-update",
|
|
108
109
|
"trellis-plan-version",
|
|
109
110
|
"trellis-push",
|
|
110
111
|
"trellis-release",
|
|
@@ -121,6 +122,7 @@
|
|
|
121
122
|
"trellis-create-command",
|
|
122
123
|
"trellis-diff-brief",
|
|
123
124
|
"trellis-extract-prd",
|
|
125
|
+
"trellis-flower-update",
|
|
124
126
|
"trellis-plan-version",
|
|
125
127
|
"trellis-push",
|
|
126
128
|
"trellis-release",
|
|
@@ -120,6 +120,8 @@ for _ in range(300):
|
|
|
120
120
|
- `from`/`to` 是 unix **秒**(不是毫秒)。
|
|
121
121
|
- `query` 是全文/索引查询串(如 `ERROR`、`status>=500 and method:POST`);`topic` 按 `__topic__` 精确过滤,两者可叠加。
|
|
122
122
|
- `reverse=true` 最新在前,排障看最新日志必开。
|
|
123
|
+
- **project/logstore 选择纪律**:不能只凭 project 名称“看起来像生产”或业务词相似就先查。先用用户给出的系统线索、服务名、应用名或已知前缀锚定 project(例如 SRM/supplier/API 应优先核对 `xhgj-zysys` 这类系统 project,而不是把 `xhxhgjmall` 仅因看起来像线上业务就当主入口);再列该 project 的 logstore,并用 logstore 名、service/app 标记、已知 traceid 或 Request URL 反查确认。多个 K8s/业务 project 并存时,把未验证项目列为候选,不要直接下结论。
|
|
124
|
+
- **Java Forest/HTTP trace 配对纪律**:不能用“某条 trace 链路里出现 404”反推“目标接口本身 404”。同一 trace 里可能有多个外部请求,状态码各不相同;必须按时间回查完整链路,把 `[Forest] Request`、`Response: Status = ...`、`调用接口异常` 配对后,再判断具体哪个 Request URL 失败。
|
|
123
125
|
- 典型场景——**FC custom-container 排障**:FC 控制面只给 `operation not permitted` / `CAExited` 这类兜底信息,**真因(Java 堆栈等)在容器 stdout/stderr,落在 SLS**。FC 日志的 topic 形态是 `FCLogs:<函数名>`,用 `--topic` 精确过滤比全文查询准。
|
|
124
126
|
- 多行日志(Java 堆栈)是否合并成一条,取决于采集端配置(如 K8s 采集 CRD 的 Multiline 配置),查询侧改不了;散成 N 条时按 `__time__` + 实例 id 拼回去。
|
|
125
127
|
|
|
@@ -120,6 +120,8 @@ for _ in range(300):
|
|
|
120
120
|
- `from`/`to` 是 unix **秒**(不是毫秒)。
|
|
121
121
|
- `query` 是全文/索引查询串(如 `ERROR`、`status>=500 and method:POST`);`topic` 按 `__topic__` 精确过滤,两者可叠加。
|
|
122
122
|
- `reverse=true` 最新在前,排障看最新日志必开。
|
|
123
|
+
- **project/logstore 选择纪律**:不能只凭 project 名称“看起来像生产”或业务词相似就先查。先用用户给出的系统线索、服务名、应用名或已知前缀锚定 project(例如 SRM/supplier/API 应优先核对 `xhgj-zysys` 这类系统 project,而不是把 `xhxhgjmall` 仅因看起来像线上业务就当主入口);再列该 project 的 logstore,并用 logstore 名、service/app 标记、已知 traceid 或 Request URL 反查确认。多个 K8s/业务 project 并存时,把未验证项目列为候选,不要直接下结论。
|
|
124
|
+
- **Java Forest/HTTP trace 配对纪律**:不能用“某条 trace 链路里出现 404”反推“目标接口本身 404”。同一 trace 里可能有多个外部请求,状态码各不相同;必须按时间回查完整链路,把 `[Forest] Request`、`Response: Status = ...`、`调用接口异常` 配对后,再判断具体哪个 Request URL 失败。
|
|
123
125
|
- 典型场景——**FC custom-container 排障**:FC 控制面只给 `operation not permitted` / `CAExited` 这类兜底信息,**真因(Java 堆栈等)在容器 stdout/stderr,落在 SLS**。FC 日志的 topic 形态是 `FCLogs:<函数名>`,用 `--topic` 精确过滤比全文查询准。
|
|
124
126
|
- 多行日志(Java 堆栈)是否合并成一条,取决于采集端配置(如 K8s 采集 CRD 的 Multiline 配置),查询侧改不了;散成 N 条时按 `__time__` + 实例 id 拼回去。
|
|
125
127
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flower-trellis",
|
|
3
|
-
"version": "0.6.0-beta.
|
|
3
|
+
"version": "0.6.0-beta.5",
|
|
4
4
|
"description": "一键安装/升级 Trellis 并自动融合 skill-garden 强化包(默认 Claude + agents)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
"commit-and-tag-version": "^12.7.3"
|
|
69
69
|
},
|
|
70
70
|
"flowerReleaseNotes": {
|
|
71
|
-
"version": "0.6.0-beta.
|
|
71
|
+
"version": "0.6.0-beta.5",
|
|
72
72
|
"source": "CHANGELOG.md",
|
|
73
|
-
"body": "### ✨ 新功能 Features\n\n* **
|
|
73
|
+
"body": "### ✨ 新功能 Features\n\n* **update:** 新增对话内 Flower 手动升级入口 ([b1df949](https://github.com/SilentFlower/flower-trellis/commit/b1df949cfc42bee5fd2d2b98fef5dd2870386bbb))",
|
|
74
74
|
"truncated": false
|
|
75
75
|
},
|
|
76
76
|
"optionalDependencies": {
|
package/src/cli.js
CHANGED
|
@@ -71,7 +71,8 @@ function printHelp() {
|
|
|
71
71
|
用法:
|
|
72
72
|
flower-trellis [init] [trellis flags] [flower flags] 安装 + 叠加强化包(默认命令)
|
|
73
73
|
flower-trellis update [trellis flags] [flower flags] 升级 + 按新版本重新叠加
|
|
74
|
-
flower-trellis self-check --json [--target <dir>]
|
|
74
|
+
flower-trellis self-check --json [--manual] [--target <dir>]
|
|
75
|
+
输出启动更新检查 JSON
|
|
75
76
|
flower-trellis self-update --target <dir> --yes 自更新 + 项目重叠加
|
|
76
77
|
flower-trellis update-check <get|set|disable|enable|snooze|skip|reset>
|
|
77
78
|
管理启动更新策略
|
|
@@ -91,7 +92,7 @@ flower 自有 flag:
|
|
|
91
92
|
--backup-retention <n> update 成功后保留最近 n 份升级备份(默认 3,0=不清理)
|
|
92
93
|
|
|
93
94
|
启动更新检查:
|
|
94
|
-
self-check --json
|
|
95
|
+
self-check --json [--manual] 稳定输出检查 JSON;manual 只绕过提示节流
|
|
95
96
|
self-update --yes [--dry-run] 执行或预览全局更新与项目 update
|
|
96
97
|
update-check set --policy <off|notify|ask|auto> [--interval-hours <n>]
|
|
97
98
|
update-check snooze [--hours <n>|--days <n>] 延后当前更新提示(默认 7 天)
|
|
@@ -12,12 +12,15 @@ import { reportTelemetry } from "../lib/telemetry.js";
|
|
|
12
12
|
*/
|
|
13
13
|
export async function selfCheck(ctx) {
|
|
14
14
|
const forceRemote = ctx.passthrough.includes("--force-remote");
|
|
15
|
+
const manual = ctx.passthrough.includes("--manual") ||
|
|
16
|
+
ctx.passthrough.includes("--ignore-prompt-suppression");
|
|
15
17
|
if (ctx.updateCheck === false) {
|
|
16
18
|
process.env.FLOWER_NO_UPDATE_CHECK = "1";
|
|
17
19
|
}
|
|
18
20
|
const result = await buildSelfCheck(ctx.target, {
|
|
19
21
|
forceRemote,
|
|
20
|
-
|
|
22
|
+
ignorePromptSuppression: manual,
|
|
23
|
+
recordPrompt: !manual,
|
|
21
24
|
onRemoteCheck: () => reportTelemetry(ctx.target, "version_check"),
|
|
22
25
|
});
|
|
23
26
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -123,6 +123,7 @@ export async function selfUpdate(ctx) {
|
|
|
123
123
|
const check = await buildSelfCheck(ctx.target, {
|
|
124
124
|
writeCache: !dryRun,
|
|
125
125
|
forceRemote: !projectOnly,
|
|
126
|
+
ignorePromptSuppression: true,
|
|
126
127
|
});
|
|
127
128
|
const shouldInstallFlower = !projectOnly && check.status === "update_available" && check.recommendation;
|
|
128
129
|
const effectiveSafety = check.safety || safetyState(
|
package/src/lib/skill-catalog.js
CHANGED
|
@@ -55,6 +55,7 @@ const SKILL_DESCRIPTION_OVERRIDES = {
|
|
|
55
55
|
"trellis-diff-brief": "快速总结当前 git 改动",
|
|
56
56
|
"trellis-draw-uml": "绘制 UML 活动图梳理业务流程",
|
|
57
57
|
"trellis-extract-prd": "从需求文档提取任务 PRD",
|
|
58
|
+
"trellis-flower-update": "手动追平已安装 Flower 强化包",
|
|
58
59
|
"trellis-migrate-skill": "迁移旧命令为 Trellis skill",
|
|
59
60
|
"trellis-plan-version": "规划版本任务、波次和分工",
|
|
60
61
|
"trellis-push": "提交、推送并同步任务进度",
|
|
@@ -67,6 +68,7 @@ const SKILL_DESCRIPTION_OVERRIDES = {
|
|
|
67
68
|
"trellis-verify-task": "校验任务文档是否覆盖需求",
|
|
68
69
|
"trellis-verify-prd": "校验 PRD 准确性和覆盖度",
|
|
69
70
|
"trellis-visualize": "生成架构、流程或状态图",
|
|
71
|
+
"trellis-worktree": "准备 linked worktree 的 Trellis 入口",
|
|
70
72
|
};
|
|
71
73
|
|
|
72
74
|
/**
|