Files
agents-skills/README.md
T
hdba4 bae73025f1 fix(ticket-management): 参数两种写法都收 + 新增 selftest + 模板域分隔符改连字符
- bin/ticket.mjs: parseArgs 同时接受 --x=v 与 --x v(仅取值型选项,布尔开关不吃后一个参数);
  新增 selftest 子命令(不联网、不需要令牌),覆盖解析器 3 条与断言正反 5 条
- SKILL.md: §5 命令块补 selftest 与「两种写法等价」;子命令表补 selftest 行;
  §6 留档 403/405 假故障的成因(示例写空格、实现只认等号);frontmatter description 补 selftest
- templates/issue.md: 域层级分隔符 / → -(断言 3 按 - 取 L1,斜杠版照抄必挂)

验证:node bin/ticket.mjs selftest → 8/8,退出码 0
2026-09-24 10:16:49 +08:00

45 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# agents-skills
> 可复用的 **agent 技能库**(执行方法,不含项目结论)。每个技能一个**顶层目录** + `SKILL.md`,按 DSH 的发现规则逐个接到技能根下即可(见「使用」)。
## 技能清单
| 技能 | 覆盖 | 主要文件 |
|---|---|---|
| `ticket-management` | Gitea 工单的「人读 + 机读」双面管理(标签零新增 · 标题问题域前缀 · 正文首行机读 · 正文自包含 · 来源只进末尾机读引用块) | `SKILL.md` · `bin/ticket.mjs` · `templates/issue.md` |
## 约定
1. **目录式技能**:`<name>/SKILL.md`(**顶层,不嵌套**)—— 嵌套的 `SKILL.md` 不会被技能提供方发现。
2. **frontmatter 必须有 `name` 与 `description`**;`description` 里写清「什么时候用」,那是唯一发现入口。
3. **只放「换一个项目还能用吗?能」的东西** —— 项目结论 / 事实不进本仓。
4. **工具要能自检**:脚本必须能在自己的仓里跑通一条最小用例。
5. **令牌不落盘**:脚本从 `GITEA_TOKEN` 或 `--token-file` 读,**绝不把令牌写进仓库、URL 或提交**。
## 使用(把本仓接到 DSH)
DSH 的技能发现**只有一层**:技能根下的 `<name>/SKILL.md` 或平铺 `<name>.md`,**不认**嵌套的 `**/SKILL.md`。所以要把**每个技能目录**接到技能根下,不能把本仓整体 junction 成 `<技能根>/agents-skills`(那层里没有 `SKILL.md`,会发现不到)。
技能根与优先级(同名时 rank 小者胜):
| rank | 来源 | 路径 |
|---|---|---|
| 100 | 项目 | `<项目根>/.dsh/skills` |
| 200 | 项目 | `<项目根>/.agents/skills` |
| 400 | 用户 | `~/.dsh/skills`(即 `$DSH_HOME/skills`) |
```powershell
# 方式一:用户级 —— 所有项目都可见(推荐;本机已按此接好 ticket-management)
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.dsh\skills"
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\skills\ticket-management" -Target '<本仓>\ticket-management'
# 方式二:项目级 —— 只在该项目可见
New-Item -ItemType Junction -Path '<项目>/.dsh/skills/ticket-management' -Target '<本仓>\ticket-management'
# 方式三:拷一份 —— 与本仓脱钩,之后改动不再同步
Copy-Item -Recurse '<本仓>\ticket-management' '<技能根>\'
```
junction 指向本仓 ⇒ 在这里改 `SKILL.md`,DSH 的下一次目录扫描即生效:**正文编辑不用重启,也不用重新链接**。技能名取自 frontmatter 的 `name`;技能根下的新增 / 改名 / 删除由 DSH 的目录监视自动发现。
> 进阶:也可让本仓**整体**充当一个技能根(`@deepseek-ai/dsh-skill-filesystem` 的 `customSkillDirs`,rank 300),但要在部署侧给该插件配目录;默认预设不带这行配置。