sophhub 0.4.39 → 0.4.41
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/package.json +1 -1
- package/skills/sophclaw-skill-creator/skill.json +12 -2
- package/skills/sophclaw-skill-creator/src/pyproject.toml +1 -1
- package/skills/sophclaw-skill-creator/src/references/path-a-create.md +9 -1
- package/skills/sophclaw-skill-creator/src/references/path-b-backfill.md +15 -6
- package/skills/sophclaw-skill-creator/src/references/skill-notes.md +15 -1
- package/skills/sophnet-oss/skill.json +13 -2
- package/skills/sophnet-oss/src/SKILL.md +32 -47
- package/skills/sophnet-oss/src/pyproject.toml +1 -1
package/package.json
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophclaw-skill-creator",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"types": ["private"],
|
|
5
5
|
"displayName": "Skill 创建向导",
|
|
6
6
|
"description": "在 SophClaw 仓库中创建/修改 Skill 或为已有 Skill 补全 design.md。两条路径:路径 A(创建/修改)三步流程:需求对齐→方案对齐→生成代码;路径 B(补全 design.md)五步流程:确定目标→阅读代码→逆向整理→逐节确认→写入文档",
|
|
7
7
|
"changelog": [
|
|
8
|
+
{
|
|
9
|
+
"version": "1.2.0",
|
|
10
|
+
"date": "2026-06-09",
|
|
11
|
+
"changes": [
|
|
12
|
+
"design.md 规范增强:方案设计新增「架构」(ASCII 流程图)和「职责划分」(组件职责表)为强制要点",
|
|
13
|
+
"关键设计决策要求每条包含「是什么」+「为什么」,帮助维护者理解取舍",
|
|
14
|
+
"路径 A/B 方案产出模板同步更新,路径 B 第三步新增架构提取步骤",
|
|
15
|
+
"注意事项新增 UV 相关约束要求:uv run 执行方式、[[tool.uv.index]] 阿里云镜像、pyproject.toml 版本同步"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
8
18
|
{
|
|
9
19
|
"version": "1.1.0",
|
|
10
20
|
"date": "2026-05-28",
|
|
@@ -25,5 +35,5 @@
|
|
|
25
35
|
}
|
|
26
36
|
],
|
|
27
37
|
"createdAt": "2026-05-25",
|
|
28
|
-
"updatedAt": "2026-
|
|
38
|
+
"updatedAt": "2026-06-09"
|
|
29
39
|
}
|
|
@@ -138,13 +138,21 @@ description: 使用 Pillow 库对图片进行有损压缩,支持调整质量
|
|
|
138
138
|
## 二、方案设计
|
|
139
139
|
- 目录结构
|
|
140
140
|
- 是否需要脚本及理由
|
|
141
|
-
-
|
|
141
|
+
- 架构(ASCII 流程图,展示数据流向和关键分支)
|
|
142
|
+
- 职责划分(组件职责表,逐一说明各文件/模块的职责)
|
|
143
|
+
- SKILL.md 关键设计决策(决策项 + 理由,帮助维护者理解 WHY)
|
|
142
144
|
- 注意事项
|
|
143
145
|
|
|
144
146
|
## 三、测试用例
|
|
145
147
|
| 编号 | 测试场景 | 触发语句 | 预期匹配 | 预期行为 | 预期输出 |
|
|
146
148
|
```
|
|
147
149
|
|
|
150
|
+
> **架构流程图要求**:使用 ASCII 框图展示核心流程,包含关键分支、循环(如轮询)、成功/失败路径。流程图的目的是让接手者在不开代码的情况下理解整体数据流。
|
|
151
|
+
>
|
|
152
|
+
> **关键设计决策要求**:每条决策需包含「是什么」+「为什么」,帮助维护者理解取舍而非仅知道配置值。例如不应只写"默认模型是 Seedance-2.0",而应补充选择依据。
|
|
153
|
+
>
|
|
154
|
+
> **注意事项要求**:覆盖运维和开发层面的关键约束,包括但不限于:`uv run` 执行方式、`[[tool.uv.index]]` 阿里云镜像源配置、`pyproject.toml` 与 `skill.json` 版本同步、外部依赖、运行时约束、路径约定等。
|
|
155
|
+
|
|
148
156
|
测试用例至少覆盖:正常场景、不触发场景、边界场景。
|
|
149
157
|
|
|
150
158
|
用户确认后进入下一步。
|
|
@@ -61,7 +61,9 @@ digraph design_backfill {
|
|
|
61
61
|
**还原方案设计**(从脚本代码 + 目录结构):
|
|
62
62
|
- 目录结构 ← `ls` 查看实际文件树
|
|
63
63
|
- 是否需要脚本及理由 ← 存在 `src/scripts/` 则"需要"
|
|
64
|
-
-
|
|
64
|
+
- 架构 ← 从脚本主流程提取:入口 → 参数解析 → 核心逻辑 → 分支/循环(如轮询)→ 成功/失败出口,用 ASCII 流程图表示
|
|
65
|
+
- 职责划分 ← 整理各文件/模块的职责分工,生成组件职责表
|
|
66
|
+
- SKILL.md 关键设计决策 ← 代码中的硬编码常量、条件分支、特殊处理逻辑,**每条需解释"为什么"而不仅"是什么"**
|
|
65
67
|
- 注意事项 ← SKILL.md 的异常处理表 + 脚本的错误分支
|
|
66
68
|
|
|
67
69
|
**还原测试用例**(从 SKILL.md 的异常处理表 + 脚本边界逻辑):
|
|
@@ -98,14 +100,21 @@ digraph design_backfill {
|
|
|
98
100
|
## 二、方案设计
|
|
99
101
|
- 目录结构
|
|
100
102
|
- 是否需要脚本及理由
|
|
101
|
-
-
|
|
103
|
+
- 架构(ASCII 流程图,展示数据流向和关键分支)
|
|
104
|
+
- 职责划分(组件职责表,逐一说明各文件/模块的职责)
|
|
105
|
+
- SKILL.md 关键设计决策(决策项 + 理由,帮助维护者理解 WHY)
|
|
102
106
|
- 注意事项
|
|
103
107
|
|
|
104
108
|
## 三、测试用例
|
|
105
109
|
| 编号 | 测试场景 | 触发语句 | 预期匹配 | 预期行为 | 预期输出 |
|
|
106
110
|
```
|
|
107
111
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
+
> **架构流程图**:使用 ASCII 框图展示核心流程,包含关键分支、循环(如轮询)、成功/失败路径。接手者应能在不读代码的情况下理解整体数据流。
|
|
113
|
+
>
|
|
114
|
+
> **关键设计决策**:每条决策需包含「是什么」+「为什么」,帮助维护者理解取舍而非仅知道配置值。
|
|
115
|
+
>
|
|
116
|
+
> **注意事项**:覆盖运维和开发层面的关键约束,包括但不限于:`uv run` 执行方式、`[[tool.uv.index]]` 阿里云镜像源配置、`pyproject.toml` 与 `skill.json` 版本同步、外部依赖、运行时约束、路径约定等。
|
|
117
|
+
|
|
118
|
+
**可酌情扩充**(规范要点必须保留,以下为补充):
|
|
119
|
+
- 「需求说明」可追加"核心能力""不触发场景"小节
|
|
120
|
+
- 以上为可选扩充,规范中的 6 个要点和表头必须保留
|
|
@@ -255,13 +255,27 @@ design.md 在 skill 创建阶段由 LLM 产出,放在 skill 根目录(与 sk
|
|
|
255
255
|
## 二、方案设计
|
|
256
256
|
- 目录结构
|
|
257
257
|
- 是否需要脚本及理由
|
|
258
|
-
-
|
|
258
|
+
- 架构(ASCII 流程图,展示数据流向和关键分支)
|
|
259
|
+
- 职责划分(组件职责表,逐一说明各文件/模块的职责)
|
|
260
|
+
- SKILL.md 关键设计决策(决策项 + 理由,帮助维护者理解 WHY)
|
|
259
261
|
- 注意事项
|
|
260
262
|
|
|
261
263
|
## 三、测试用例
|
|
262
264
|
| 编号 | 测试场景 | 触发语句 | 预期匹配 | 预期行为 | 预期输出 |
|
|
263
265
|
```
|
|
264
266
|
|
|
267
|
+
> **架构流程图要求**:使用 ASCII 框图展示核心流程,包含关键分支、循环(如轮询)、成功/失败路径。流程图应让接手者在不读代码的情况下理解整体数据流。
|
|
268
|
+
>
|
|
269
|
+
> **关键设计决策要求**:每条决策需包含「是什么」+「为什么」,帮助维护者理解取舍而非仅知道配置值。例如不应只写"默认模型是 Seedance-2.0",而应补充选择依据。
|
|
270
|
+
>
|
|
271
|
+
> **注意事项要求**:覆盖运维和开发层面的关键约束,包括但不限于:
|
|
272
|
+
> - 执行方式:`uv run` 而非 `python`
|
|
273
|
+
> - 镜像源:`[[tool.uv.index]]` 是否配置了阿里云镜像
|
|
274
|
+
> - 版本同步:`pyproject.toml` version 与 `skill.json` 保持一致
|
|
275
|
+
> - 外部依赖:API Key、第三方服务、系统工具(如 curl)等
|
|
276
|
+
> - 运行时约束:超时时间、轮询间隔、文件存储时效等
|
|
277
|
+
> - 路径约定:SKILL.md 中路径使用运行时路径(不含 `src/`)
|
|
278
|
+
|
|
265
279
|
### 用途
|
|
266
280
|
|
|
267
281
|
- 记录设计决策,供后续维护者参考
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sophnet-oss",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"types": [
|
|
5
5
|
"builtin"
|
|
6
6
|
],
|
|
7
7
|
"displayName": "OSS链接生成",
|
|
8
8
|
"description": "将文件转换为一个可供下载的文件链接",
|
|
9
9
|
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"changes": [
|
|
12
|
+
"SKILL.md 全文中文化,精简 description 为中文「功能+触发场景」格式",
|
|
13
|
+
"Signed URL 章节新增 credential 日期不可修改、禁止重复参数约束",
|
|
14
|
+
"合并 Processing Mode 与禁止操作章节,输出模板固定化防止 LLM 篡改链接",
|
|
15
|
+
"新增 design.md 设计文档,含架构流程图和职责划分表",
|
|
16
|
+
"修复 pyproject.toml 版本号与 skill.json 同步"
|
|
17
|
+
],
|
|
18
|
+
"date": "2026-06-09",
|
|
19
|
+
"version": "1.1.1"
|
|
20
|
+
},
|
|
10
21
|
{
|
|
11
22
|
"changes": [
|
|
12
23
|
"补充签名下载链接必须完整保留查询参数的使用约束"
|
|
@@ -23,5 +34,5 @@
|
|
|
23
34
|
}
|
|
24
35
|
],
|
|
25
36
|
"createdAt": "2026-04-09",
|
|
26
|
-
"updatedAt": "2026-
|
|
37
|
+
"updatedAt": "2026-06-09"
|
|
27
38
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sophnet-oss
|
|
3
|
-
description:
|
|
3
|
+
description: 将本地文件路径转换为可下载链接(24小时有效)。当用户要求把文件转成链接、获取文件URL、分享文件时使用。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# File Path to URL
|
|
@@ -13,32 +13,23 @@ description: Convert a local file path to a downloadable URL (valid for 24 hours
|
|
|
13
13
|
|
|
14
14
|
- **必须**使用脚本输出的 `DOWNLOAD_URL` **完整字符串**(一字不改)填入下文展示模板中的下载链接,或原样写入下游。
|
|
15
15
|
- **禁止**去掉 `?` 及后续查询参数、禁止截取签名片段、禁止尝试「换成更短的裸 URL」或做任何 URL「美化」。
|
|
16
|
-
- 签名 URL 的参数中,**`x-oss-signature-version` 和 `x-oss-credential`
|
|
16
|
+
- 签名 URL 的参数中,**`x-oss-signature-version` 和 `x-oss-credential` 不可省略**,分别为签名算法的版本标识和访问凭证标识,缺失任一参数均会导致签名校验失败。**`x-oss-credential` 内嵌的日期不可修改**,禁止插入重复的 credential 参数。
|
|
17
17
|
- 若裸域名路径在无签名时可访问,那是偶然行为;本 skill **不以裸链为准**,仅以脚本输出的带签名 URL 为准。
|
|
18
18
|
- 向用户展示时沿用下文「转换成功后」的固定格式即可;**不要改模板结构**,只保证链接内容为完整签名 URL。
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## 前置条件
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- **NO sub-tasks** - Never spawn background sessions or use sessions_spawn
|
|
25
|
-
- **NO task splitting** - Complete the conversion in one continuous run
|
|
26
|
-
- **NO parallel execution** - Convert one file at a time
|
|
27
|
-
|
|
28
|
-
## Prerequisites
|
|
29
|
-
|
|
30
|
-
- Python packages: sophnet-tools
|
|
22
|
+
- Python 包:`sophnet-tools`(需预先安装在系统 Python 环境中)
|
|
31
23
|
|
|
32
24
|
## Usage
|
|
33
25
|
|
|
34
|
-
|
|
26
|
+
当用户要求将文件路径转换为 URL 时:
|
|
35
27
|
|
|
36
|
-
1.
|
|
37
|
-
2.
|
|
28
|
+
1. **提取文件路径**:从用户输入或日志中提取(见下文「路径提取」)。
|
|
29
|
+
2. **运行脚本**:
|
|
38
30
|
|
|
39
31
|
```bash
|
|
40
|
-
|
|
41
|
-
python {baseDir}/scripts/upload_file.py \
|
|
32
|
+
python3 {baseDir}/scripts/upload_file.py \
|
|
42
33
|
--file /absolute/path/to/file \
|
|
43
34
|
--timeout 120
|
|
44
35
|
```
|
|
@@ -48,72 +39,66 @@ uv run --with sophnet-tools \
|
|
|
48
39
|
- `--file`: 要转换为 URL 的本地文件路径(必填)
|
|
49
40
|
- `--timeout`: 请求超时秒数(默认 120,大文件可适当增大)
|
|
50
41
|
|
|
51
|
-
##
|
|
42
|
+
## 输出
|
|
52
43
|
|
|
53
|
-
|
|
44
|
+
脚本输出结构化键值对:
|
|
54
45
|
|
|
46
|
+
成功时:
|
|
55
47
|
```
|
|
56
48
|
FILE_PATH=/absolute/path/to/file
|
|
57
49
|
UPLOAD_STATUS=uploaded
|
|
58
50
|
DOWNLOAD_URL=https://...signed-url...
|
|
59
51
|
```
|
|
60
52
|
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
失败时:
|
|
63
54
|
```
|
|
64
55
|
FILE_PATH=/absolute/path/to/file
|
|
65
56
|
UPLOAD_STATUS=failed
|
|
66
|
-
ERROR
|
|
57
|
+
ERROR=错误描述
|
|
67
58
|
```
|
|
68
59
|
|
|
69
|
-
|
|
60
|
+
**转换成功后,向用户展示为(固定模板,不可修改结构):**
|
|
70
61
|
|
|
71
62
|
```
|
|
72
63
|
文件路径已转换为可访问链接:
|
|
73
64
|
|
|
74
65
|
文件路径:/absolute/path/to/file
|
|
75
|
-
|
|
66
|
+
下载链接:<完整 DOWNLOAD_URL,一字不改>
|
|
76
67
|
|
|
77
68
|
⏰ 链接有效期:24小时
|
|
78
69
|
```
|
|
79
70
|
|
|
80
|
-
##
|
|
71
|
+
## 路径提取
|
|
81
72
|
|
|
82
|
-
|
|
73
|
+
当用户通过聊天提供文件时,从日志中查找以下模式:
|
|
83
74
|
|
|
84
75
|
```
|
|
85
76
|
Resolved relative path: "media/inbound/images/xxx.pdf" -> "/absolute/path/to/workspace/media/inbound/images/xxx.pdf"
|
|
86
77
|
```
|
|
87
78
|
|
|
88
|
-
|
|
79
|
+
取 `->` 右侧的绝对路径传入脚本。优先从上述日志中取解析后的路径,再回退到用户输入。
|
|
89
80
|
|
|
90
|
-
|
|
81
|
+
## 示例流程
|
|
91
82
|
|
|
92
|
-
|
|
83
|
+
用户:"把这个文件转成链接" / "给我这个文件的 URL"
|
|
93
84
|
|
|
94
|
-
|
|
85
|
+
1. 从日志 pattern(`Resolved relative path: "..." -> "/absolute/..."`)或用户输入提取文件路径
|
|
86
|
+
2. 执行:`python3 {baseDir}/scripts/upload_file.py --file /absolute/path/to/file --timeout 120`
|
|
87
|
+
3. 解析输出,按固定模板向用户展示下载链接
|
|
95
88
|
|
|
96
|
-
|
|
97
|
-
2. Run: `uv run --with sophnet-tools python {baseDir}/scripts/upload_file.py --file /absolute/path/to/file --timeout 120`
|
|
98
|
-
3. Parse the output and display the URL to the user
|
|
99
|
-
|
|
100
|
-
## Notes
|
|
89
|
+
## 注意事项
|
|
101
90
|
|
|
102
91
|
- 返回的 URL 有效期为 **24 小时**
|
|
103
92
|
- 任意类型文件均可转换(无扩展名限制)
|
|
104
93
|
- 大文件可增大 `--timeout`(默认 120 秒)
|
|
105
94
|
- 始终使用绝对路径以保证可靠
|
|
95
|
+
- **严格串行执行**:禁止并发、禁止拆分子任务、禁止后台运行,一次只转换一个文件
|
|
96
|
+
- **不修改签名 URL**:`DOWNLOAD_URL` 必须原样使用,不截取、不"美化"、不修改任何参数
|
|
106
97
|
|
|
107
|
-
## ⚠️
|
|
108
|
-
|
|
109
|
-
**Do NOT:**
|
|
110
|
-
|
|
111
|
-
- Spawn sub-agent sessions (sessions_spawn)
|
|
112
|
-
- Run multiple parallel conversions
|
|
113
|
-
- Split the task into separate operations
|
|
114
|
-
- Use background processes
|
|
115
|
-
|
|
116
|
-
**ONLY:**
|
|
98
|
+
## ⚠️ 禁止操作
|
|
117
99
|
|
|
118
|
-
-
|
|
119
|
-
-
|
|
100
|
+
- 禁止派生子会话(sessions_spawn)
|
|
101
|
+
- 禁止并发转换多个文件
|
|
102
|
+
- 禁止将任务拆分为多个步骤
|
|
103
|
+
- 禁止使用后台进程
|
|
104
|
+
- 禁止修改 `DOWNLOAD_URL` 中的任何字符(含查询参数)
|