238 lines
7.9 KiB
Markdown
238 lines
7.9 KiB
Markdown
# 技能 slug 命名规范(verb-noun-platform)
|
||
|
||
> 本文是匠厂**新业务 skill** 的 slug / Git 仓库名 / 目录名命名权威说明。复制 `skill-template` 出去开发新技能前**必读**;Agent 在开发者询问命名或 slug 时也应先读本文。
|
||
|
||
---
|
||
|
||
## 1. 适用范围
|
||
|
||
| 范围 | 说明 |
|
||
|------|------|
|
||
| ✅ **适用** | 从 `skill-template` **复制出去的新技能** |
|
||
| ❌ **不追溯** | 已上线历史技能(如 `account-manager`、`reconcile-finance`、`scrape-contacts-lianjia` 等)保持不动 |
|
||
| ❌ **不修改** | 其他仓库(尤其 `account-manager`)不在本文约束范围内 |
|
||
| ✅ **模板占位** | 模板本体的 `your-skill-slug` 占位必须继续通过全部测试 |
|
||
|
||
**新技能勿仿**历史 2 段无平台形态(如 `reconcile-finance`)或不符合 verb-noun-platform 的旧 repo 名;校验器对历史 repo **不追溯**,但规范中明确标注为反模式。
|
||
|
||
---
|
||
|
||
## 2. 命名格式
|
||
|
||
标准形态(约 95% 新技能):
|
||
|
||
```text
|
||
{verb}-{noun-phrase}-{platform}
|
||
```
|
||
|
||
| 部分 | 规则 |
|
||
|------|------|
|
||
| **verb** | 1 个词,来自 [动词白名单](#5-动词白名单) |
|
||
| **noun-phrase** | 1~3 个词(按 `-` 分段),描述业务对象 |
|
||
| **platform** | 1 个词,来自 [平台白名单](#6-平台白名单);可含连字符(如 `single-window`) |
|
||
|
||
**展示层分工不变:**
|
||
|
||
| 字段 | 语言 | 示例 |
|
||
|------|------|------|
|
||
| slug / repo / 目录 / `SKILL_SLUG` / DB 文件名 | **英文** kebab-case | `download-settlement-report-amazon` |
|
||
| `SKILL.md` 的 `name`、`description`、根 `README.md` | **中文** | `亚马逊结算报表下载` |
|
||
|
||
---
|
||
|
||
## 3. 硬约束(新技能强制校验)
|
||
|
||
| 约束 | 值 |
|
||
|------|-----|
|
||
| 格式 | `{verb}-{noun-phrase}-{platform}`(标准型,默认) |
|
||
| 总段数(按 `-` 分割) | **3~5 段**(标准型);scope 型见 [§4](#4-三类合法形态) |
|
||
| 总长度 | **≤ 48 字符** |
|
||
| 字符集 | 小写字母、数字、连字符;kebab-case |
|
||
| 禁止 | 中文 slug、下划线、**平台放最前**(如 `amazon-download-xxx`) |
|
||
|
||
实现校验见 `scripts/util/slug_naming.py`;`scripts/db/display_metadata_validator.py` 在 `SKILL.md` frontmatter 自检时调用。
|
||
|
||
---
|
||
|
||
## 4. 三类合法形态
|
||
|
||
### 4.1 标准型(95%)
|
||
|
||
`verb-noun-platform` 或 `verb-noun-noun-platform`(3~5 段)
|
||
|
||
- 第 1 段 ∈ 动词白名单
|
||
- 最后 1 段(或 hyphenated 平台的最后 2 段)∈ 平台白名单
|
||
- 中间为 noun-phrase(1~3 段)
|
||
|
||
示例:
|
||
|
||
- `download-settlement-report-amazon`
|
||
- `add-product-shopee`
|
||
- `enter-sales-receipt-kingdee`
|
||
- `fill-export-declaration-single-window`
|
||
|
||
### 4.2 scope 型(少见)
|
||
|
||
`verb-noun-scope`
|
||
|
||
- 最后 1 段 ∈ scope 白名单:`all` | `batch` | `multi` | `default`
|
||
- 第 1 段 ∈ 动词白名单
|
||
- 总段数 3~5
|
||
|
||
示例:`generate-article-all`
|
||
|
||
> 说明:`geo-generate-article-all` 若作为新技能且不在豁免表、首段 `geo` 不在动词表,应写为 `generate-article-all`。
|
||
|
||
### 4.3 历史豁免(不校验语义)
|
||
|
||
以下 slug 跳过 verb/platform 语义校验(见 `LEGACY_EXEMPT_SLUGS`):
|
||
|
||
- `account-manager`
|
||
- `skill-template`
|
||
- `your-skill-slug` / `your_skill_slug`(模板占位)
|
||
|
||
---
|
||
|
||
## 5. 动词白名单
|
||
|
||
词表文件:[`assets/naming/verbs.txt`](../assets/naming/verbs.txt)(每行一词,便于后续扩展)
|
||
|
||
| 动词 | 动词 | 动词 | 动词 |
|
||
|------|------|------|------|
|
||
| scrape | receive | download | export |
|
||
| add | fill | enter | bind |
|
||
| withdraw | reconcile | verify | submit |
|
||
| query | process | reply | generate |
|
||
| draft | review | confirm | track |
|
||
| upload | match | triage | ship |
|
||
| reprice | | | |
|
||
|
||
---
|
||
|
||
## 6. 平台白名单
|
||
|
||
词表文件:[`assets/naming/platforms.txt`](../assets/naming/platforms.txt)
|
||
|
||
| 平台 | 平台 | 平台 |
|
||
|------|------|------|
|
||
| amazon | shopee | xinghang |
|
||
| alibaba | kingdee | icbc |
|
||
| pingpong | worldfirst | paypal |
|
||
| lianlian | single-window | export-rebate |
|
||
| etax | | |
|
||
|
||
scope 词表:[`assets/naming/scopes.txt`](../assets/naming/scopes.txt) — `all`、`batch`、`multi`、`default`
|
||
|
||
---
|
||
|
||
## 7. slug 与展示字段分工
|
||
|
||
```yaml
|
||
---
|
||
name: 亚马逊结算报表下载 # 中文,用户可见
|
||
description: "从卖家中心下载结算报表并入库" # 中文说明
|
||
metadata:
|
||
openclaw:
|
||
slug: download-settlement-report-amazon # 英文机器标识
|
||
---
|
||
```
|
||
|
||
同步修改:
|
||
|
||
- 目录名
|
||
- `metadata.openclaw.slug`
|
||
- `scripts/util/constants.py` 中的 `SKILL_SLUG`
|
||
- 默认数据库路径 `{slug}/{slug}.db`
|
||
|
||
三者必须一致。
|
||
|
||
---
|
||
|
||
## 8. 与 account-manager 的关系
|
||
|
||
slug **末段 platform** 与 `account-manager` 中的 `platform_key` **语义对应**,但**不要求字符串完全相等**。
|
||
|
||
| slug 末段 (platform) | account-manager platform_key(示例) |
|
||
|----------------------|--------------------------------------|
|
||
| amazon | `amazon_sim` / `amazon` |
|
||
| shopee | `shopee` |
|
||
| kingdee | `kingdee` |
|
||
|
||
新技能若需账号下发,在 `REQUIREMENTS.md` §0 填写拟用的 `platform_key`,并与兄弟技能调用参数对齐。
|
||
|
||
---
|
||
|
||
## 9. 复制新技能流程
|
||
|
||
1. **先定 slug** — 按本文规范拟定 `{verb}-{noun-phrase}-{platform}`,确认在白名单内且 ≤ 48 字符
|
||
2. **复制目录** — **推荐** [`tools/scaffold_skill.ps1`](../tools/scaffold_skill.ps1)(`-Slug` 与目录名一致);勿整包复制带走 `.git`
|
||
2.5. **清理 Git(若未用 scaffold)** — 删除 `.git`、`.openclaw-skill-template`、`.pytest_cache`;再 `git init` 与 `git remote add origin`
|
||
3. **全局替换** — `your-skill-slug` → 新 slug;更新 `SKILL.md`、`constants.py`、文档中的占位
|
||
4. **填写 REQUIREMENTS** — 完成 [`REQUIREMENTS.md`](REQUIREMENTS.md) §0 技能标识
|
||
5. **开发 & 自检** — `python tests/run_tests.py -v`,含 slug 语义测试;`git remote -v` 确认非 template
|
||
|
||
---
|
||
|
||
## 10. 正例 / 反例
|
||
|
||
### ✅ 正例
|
||
|
||
| slug | 说明 |
|
||
|------|------|
|
||
| `download-settlement-report-amazon` | 标准型,4 段 |
|
||
| `add-product-shopee` | 标准型,3 段 |
|
||
| `enter-sales-receipt-kingdee` | 标准型 |
|
||
| `fill-export-declaration-single-window` | 标准型,平台含连字符 |
|
||
| `generate-article-all` | scope 型 |
|
||
|
||
### ❌ 反例
|
||
|
||
| slug | 原因 |
|
||
|------|------|
|
||
| `amazon-download-settlement-report` | 平台在最前 |
|
||
| `enter-cross-border-sales-receipt-voucher-kingdee` | 过长、noun 臃肿 |
|
||
| `reconcile-finance` | 新技能禁止 2 段无平台 |
|
||
| `download_settlement_amazon` | 非 kebab-case(下划线) |
|
||
|
||
---
|
||
|
||
## 11. 反模式
|
||
|
||
- **平台前置**:`amazon-download-...`、`shopee-add-...`
|
||
- **英文占位 name**:复制后仍保留 `My Skill` 或纯英文 slug 风格名称
|
||
- **只改目录名**:`SKILL.md` slug 与 `constants.SKILL_SLUG` 未同步
|
||
- **noun 堆砌**:中间段过多导致超 48 字符或难以阅读
|
||
- **仿历史 2 段 repo**:`reconcile-finance`、`content-manager` 等
|
||
|
||
---
|
||
|
||
## 12. 演进说明(当前不启用)
|
||
|
||
当技能库规模 **> 200** 时,可再评估引入 `{domain}-verb-noun-platform` 前缀形态。**当前不启用**,新技能一律使用本文 verb-noun-platform 标准型或 scope 型。
|
||
|
||
---
|
||
|
||
## 13. 历史形态说明
|
||
|
||
以下为代表性**历史 repo**,新技能**勿仿**:
|
||
|
||
| 历史 slug | 说明 |
|
||
|-----------|------|
|
||
| `account-manager` | 跨平台账号管理,非 verb-noun-platform |
|
||
| `reconcile-finance` | 2 段无 platform |
|
||
| `scrape-contacts-lianjia` | 平台名不在当前白名单(链家) |
|
||
| `skill-template` | 模板仓库本身 |
|
||
|
||
校验器通过 `LEGACY_EXEMPT_SLUGS` 对模板占位与少数豁免 slug 跳过语义检查;**新复制出去的业务 skill 不在豁免表内**,必须满足 §3 硬约束。
|
||
|
||
---
|
||
|
||
## 14. 相关文档
|
||
|
||
| 文档 | 内容 |
|
||
|------|------|
|
||
| [`DEVELOPMENT.md`](DEVELOPMENT.md) | 复制模板步骤、发布前检查清单 |
|
||
| [`REQUIREMENTS.md`](REQUIREMENTS.md) | §0 技能标识必填项 |
|
||
| [`../references/SCHEMA.md`](../references/SCHEMA.md) | kebab-case 与数据库路径 |
|
||
| [`../SKILL.md`](../SKILL.md) | frontmatter 命名摘要 |
|