跳到主要内容

过滤参考

三层过滤机制的完整规范,用于控制哪些 Skill 到达哪些 Target。

需要快速指南?

参见 Filtering Skills 获取场景驱动的指南。

概览

层级范围设置位置语法评估时机
.skillignore对所有 Target 隐藏Source 目录或已 track 的仓库根目录gitignoreDiscovery
SKILL.md metadata.targets将 Skill 限制到列出的 Target各 Skill frontmatterYAML 列表Sync(在 discovery 时解析)
Agent targets将 Agent 限制到列出的 Target各 Agent frontmatterYAML 列表Sync(在 discovery 时解析)
Target include/exclude按 Target、按资源config.yaml 或 CLI flagGo filepath.Match globSync
Sync mode 注意事项

以上三层过滤只适用于 mergecopy Sync 模式。 在 symlink 模式下,整个 Source 目录作为一个整体被链接——逐个 Skill 的过滤不会生效。

评估顺序与优先级

一个 Skill 必须通过所有层级才能到达某个 Target:

  1. .skillignore — 在 discovery 时评估。匹配的 Skill 永远不会进入 sync 流程。
  2. Target include/exclude — 在 sync 时评估(FilterSkills)。Skill 会被发现,但对不匹配的 Target 会被跳过。
  3. SKILL.md metadata.targets — 在 sync 时评估(FilterSkillsByTarget)。Skill 被限制到其声明的 Target。

.skillignore

位置:

  • Source 根目录:~/.config/skillshare/skills/.skillignore — 适用于所有 Skill
  • 已 track 的仓库根目录:_team-repo/.skillignore — 仅适用于该仓库内部

语法: 完整的 gitignore 语法 —— *(单段)、**(任意深度)、?[abc]!pattern(取反)、/pattern(锚定)、pattern/(仅目录)。

.skillignore.local 放在 .skillignore 旁边。规则会追加在基础文件之后——以最后匹配的规则为准。使用 !pattern 来取消忽略。不要提交此文件。

CLI 可见性:

命令输出
skillshare sync数量 + Skill 名称
skillshare status --jsonsource.skillignore 对象,包含 pattern 和被忽略的列表
skillshare doctorPattern 数量与被忽略数量

📖 File structure 参考

SKILL.md targets 字段

格式: 顶层或嵌套于 metadata 之下:

# 推荐
metadata:
targets: [claude, cursor]

# 旧版兼容写法
targets: [claude, cursor]

行为: 白名单——该 Skill 只会 sync 到列出的 Target。省略此字段表示 sync 到所有 Target。如果 metadata.targets 与顶层 targets 同时存在,metadata.targets 优先。

别名: Target 名称支持别名。claude 会匹配配置为 claude-code 的 Target。参见 Supported Targets

📖 Skill format — targets 字段

Agent 也通过 Agent frontmatter 中顶层的 targets 列表支持相同的白名单机制。没有该字段的 Agent 会 sync 到所有支持 Agent 的 Target。参见 Agents — Agent File Format

Target include/exclude 过滤器

通过 CLI 设置:

# Skill
skillshare target claude --add-include "team-*"
skillshare target cursor --add-exclude "legacy-*"
skillshare target claude --remove-include "team-*"

# Agent
skillshare target claude --add-agent-include "team-*"
skillshare target claude --add-agent-exclude "draft-*"
skillshare target claude --remove-agent-include "team-*"

存储位置: config.yaml 中,Skill 对应 targets.<name>.include / targets.<name>.exclude,Agent 对应 targets.<name>.agents.include / targets.<name>.agents.exclude

语法: Go filepath.Match glob 模式,匹配扁平化的资源名称。Skill 使用扁平化的 Skill 名称(例如 _team__frontend__ui);Agent 使用扁平化的 .md 文件名。

支持不支持
*(任意字符)**(递归)
?(单个字符){a,b}(花括号展开)
[abc](字符类)

优先级:includeexclude 同时设置时,先应用 include,再应用 exclude。同时命中两者的资源会被排除。

可视化编辑器: skillshare ui → Targets 页面 → "Customize filters" 按钮。

📖 Target 命令 · 过滤行为示例 · Configuration

另请参阅