chore: auto release commit (2026-07-03 18:50:07)
All checks were successful
技能自动化发布 / release (push) Successful in 6s
All checks were successful
技能自动化发布 / release (push) Successful in 6s
This commit is contained in:
@@ -80,11 +80,13 @@
|
||||
你不应该直接在这个仓库里开发业务,而应该:
|
||||
|
||||
0. 按 [`NAMING.md`](NAMING.md) 确定 slug(`{verb}-{noun-phrase}-{platform}`)
|
||||
1. 复制这个目录
|
||||
2. 改成新 skill 的目录名(与 slug 一致)
|
||||
1. **优先**用 [`tools/scaffold_skill.ps1`](../tools/scaffold_skill.ps1) 创建新目录(见 [`tools/README.md`](../tools/README.md))
|
||||
2. 在新目录内 `git init` 并绑定**本技能**远端(**不得**保留模板 `.git`)
|
||||
3. 把占位内容替换掉
|
||||
4. 再开始写业务逻辑
|
||||
|
||||
> **Git 红线**:禁止资源管理器整文件夹复制后保留模板 `.git`;`git remote -v` 必须指向新技能仓库,不能仍是 skill-template。
|
||||
|
||||
## 2. 新 skill 的标准目录结构
|
||||
|
||||
复制模板后,你应该保留下面这套结构:
|
||||
@@ -168,10 +170,13 @@ scripts/
|
||||
- `examples/real_browser_rpa/scripts/service/task_rpa.py`
|
||||
- `examples/real_browser_rpa/scripts/service/account_client.py`
|
||||
- 若是 **仿真浏览器 RPA**(自有 sandbox、表单批量提交、可控 DOM),**必须先读** `examples/simulator_browser_rpa/README.md`,再按需复制到 `scripts/service/`:
|
||||
- `examples/simulator_browser_rpa/scripts/service/browser_session.py`
|
||||
- `examples/simulator_browser_rpa/scripts/service/adapter/`
|
||||
- `examples/simulator_browser_rpa/scripts/service/task_service.py`
|
||||
- `examples/simulator_browser_rpa/scripts/service/browser_session.py`(async)
|
||||
- `examples/simulator_browser_rpa/scripts/service/account_client.py`(subprocess,对齐 `real_browser_rpa`)
|
||||
- `examples/simulator_browser_rpa/scripts/service/simulator_playwright.py`(RPA 主流程,复制后改名为 `<platform>_playwright.py`)
|
||||
- `examples/simulator_browser_rpa/scripts/service/adapter/`(薄 `simulator_rpa` + mock)
|
||||
- `examples/simulator_browser_rpa/scripts/service/task_service.py`(async 编排)
|
||||
- `sandbox/demo_app.html` 仅留在 examples,不进入生产 skill
|
||||
- **禁止**:`rpa_helpers`、sync Playwright 用于完整技能 RPA 主路径、`task_service` 散落 account-manager subprocess
|
||||
3. **只用共享库,不在 skill 里重写反反爬**:
|
||||
```python
|
||||
from jiangchang_skill_core import config
|
||||
@@ -244,12 +249,52 @@ release workflow 会对 `scripts/` 下的 Python 源码做加密/打包。当前
|
||||
|
||||
### 第一步:复制模板并改目录名
|
||||
|
||||
例如你要开发 `your-skill-slug`(或 `disburse-payroll-icbc` 一类领域 skill):
|
||||
例如你要开发 `disburse-payroll-icbc` 一类领域 skill(目录名 = slug):
|
||||
|
||||
1. 复制 `skill-template`
|
||||
2. 新目录改成与 `slug` 一致的名称(如 `your-skill-slug`)
|
||||
3. 初始化为独立 git 仓库
|
||||
4. 关联它自己的远端仓库
|
||||
#### 推荐方式(首选)
|
||||
|
||||
在 **skill-template 仓库根目录**执行:
|
||||
|
||||
```powershell
|
||||
.\tools\scaffold_skill.ps1 -Slug disburse-payroll-icbc -Destination D:\OpenClaw\client-gdcm\disburse-payroll-icbc
|
||||
cd D:\OpenClaw\client-gdcm\disburse-payroll-icbc
|
||||
git init
|
||||
git remote add origin <你的新技能 Gitea/Git 仓库 URL>
|
||||
git remote -v # 确认 origin 不是 skill-template
|
||||
```
|
||||
|
||||
跨平台可用 `python tools/scaffold_skill.py --slug ... --destination ...`(见 [`tools/README.md`](../tools/README.md))。
|
||||
|
||||
脚手架会排除 `.git`、缓存与 `.env`,并删除 `.openclaw-skill-template` 标记;**不会**自动 `git init`。
|
||||
|
||||
#### 禁止方式
|
||||
|
||||
| 做法 | 后果 |
|
||||
|------|------|
|
||||
| ❌ 资源管理器整文件夹复制后不做 Git 清理 | 隐藏 `.git` 被带走,push 串到 template |
|
||||
| ❌ 保留模板 `.git` 只改 `remote url` | 历史、分支、对象库仍属 template |
|
||||
| ❌ 未删 `.git` 就 `git init` | 嵌套/混乱仓库,难以排查 |
|
||||
|
||||
#### 若已手工复制(补救)
|
||||
|
||||
```powershell
|
||||
cd <新技能目录>
|
||||
Remove-Item -Recurse -Force .git
|
||||
Remove-Item -Recurse -Force .pytest_cache -ErrorAction SilentlyContinue
|
||||
Remove-Item -Force .openclaw-skill-template -ErrorAction SilentlyContinue
|
||||
git init
|
||||
git remote add origin <新技能仓库 URL>
|
||||
git remote -v
|
||||
```
|
||||
|
||||
#### AI / 编程代理复制红线
|
||||
|
||||
| 禁止 | 说明 |
|
||||
|------|------|
|
||||
| 保留模板 `.git` | 必须先 `Remove-Item -Recurse -Force .git` 再 `git init` |
|
||||
| `origin` 仍指向 skill-template | 复制后必须 `git remote -v` 自检 |
|
||||
| 保留 `.openclaw-skill-template` | 仅 template 源仓库可有;业务技能不得保留 |
|
||||
| 复制 `.pytest_cache` / `__pycache__` | 用 scaffold 已排除;手工复制应删 |
|
||||
|
||||
目录名要和 skill slug 对齐,后面很多地方都依赖这个命名。
|
||||
|
||||
@@ -699,6 +744,9 @@ uses: client-jiangchang/jiangchang-platform-kit/.github/workflows/reusable-relea
|
||||
- [ ] 源码/文档/配置为 **UTF-8 without BOM**(Python 文件不得含 `U+FEFF`)
|
||||
- [ ] 没有新增默认必跑测试访问真实网络或浏览器
|
||||
- [ ] 如有 integration 测试需求,已写在 `tests/integration/` 下并保持 `.sample` 后缀
|
||||
- [ ] 本仓库**不是** skill-template 的误复制(根目录**无** `.openclaw-skill-template`)
|
||||
- [ ] `git remote -v` 指向**本技能**远端,URL 不含 skill-template 仓库名
|
||||
- [ ] `git log` 首条提交属于本技能(非模板历史)
|
||||
|
||||
## 17. 常见错误
|
||||
|
||||
@@ -758,12 +806,12 @@ uses: client-jiangchang/jiangchang-platform-kit/.github/workflows/reusable-relea
|
||||
|
||||
表现:
|
||||
|
||||
- slug 形如 `amazon-download-settlement-report`
|
||||
- slug 形如 `erp-download-settlement-report`(平台段错误地放在最前)
|
||||
- 语义校验或 `test_slug_naming` 失败
|
||||
|
||||
要改:
|
||||
|
||||
- 动词放首段,平台放末段,例如 `download-settlement-report-amazon`
|
||||
- 动词放首段,平台放末段,例如 `download-settlement-report-erp`
|
||||
- 见 [`NAMING.md`](NAMING.md)
|
||||
|
||||
### 错误 6:noun 段过长导致超 48 字符
|
||||
@@ -789,6 +837,25 @@ uses: client-jiangchang/jiangchang-platform-kit/.github/workflows/reusable-relea
|
||||
- `SKILL.md` 的 `metadata.openclaw.slug`
|
||||
- `scripts/util/constants.py` 的 `SKILL_SLUG`
|
||||
|
||||
### 错误 8:复制模板时带走了 `.git`
|
||||
|
||||
表现:
|
||||
|
||||
- `git remote -v` 仍显示 skill-template 的 origin
|
||||
- push 到错误仓库,或 log 里全是模板历史
|
||||
- 新技能目录里仍有 `.openclaw-skill-template`
|
||||
|
||||
修复:
|
||||
|
||||
```powershell
|
||||
Remove-Item -Recurse -Force .git
|
||||
Remove-Item -Force .openclaw-skill-template -ErrorAction SilentlyContinue
|
||||
git init
|
||||
git remote add origin <新技能仓库 URL>
|
||||
```
|
||||
|
||||
以后复制请优先用 `tools/scaffold_skill.ps1`(见 [`tools/README.md`](../tools/README.md))。
|
||||
|
||||
## 18. 推荐开发顺序总结
|
||||
|
||||
如果让一个新人照着做,我建议他按这个顺序:
|
||||
|
||||
Reference in New Issue
Block a user