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

2.8 KiB
Raw Blame History

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)
# 方式一:用户级 —— 所有项目都可见(推荐;本机已按此接好 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),但要在部署侧给该插件配目录;默认预设不带这行配置。