过滤参考
三层过滤机制的完整规范,用于控制哪些 Skill 到达哪些 Target。
参见 Filtering Skills 获取场景驱动的指南。
概览
| 层级 | 范围 | 设置位置 | 语法 | 评估时机 |
|---|---|---|---|---|
.skillignore | 对所有 Target 隐藏 | Source 目录或已 track 的仓库根目录 | gitignore | Discovery |
SKILL.md metadata.targets | 将 Skill 限制到列出的 Target | 各 Skill frontmatter | YAML 列表 | Sync(在 discovery 时解析) |
Agent targets | 将 Agent 限制到列出的 Target | 各 Agent frontmatter | YAML 列表 | Sync(在 discovery 时解析) |
| Target include/exclude | 按 Target、按资源 | config.yaml 或 CLI flag | Go filepath.Match glob | Sync |
以上三层过滤只适用于 merge 和 copy Sync 模式。 在 symlink 模式下,整个 Source 目录作为一个整体被链接——逐个 Skill 的过滤不会生效。
评估顺序与优先级
一个 Skill 必须通过所有层级才能到达某个 Target:
.skillignore— 在 discovery 时评估。匹配的 Skill 永远不会进入 sync 流程。- Target include/exclude — 在 sync 时评估(
FilterSkills)。Skill 会被发现,但对不匹配的 Target 会被跳过。 - 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 --json | source.skillignore 对象,包含 pattern 和被忽略的列表 |
skillshare doctor | Pattern 数量与被忽略数量 |
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。
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](字符类) |
优先级: 当 include 和 exclude 同时设置时,先应用 include,再应用 exclude。同时命中两者的资源会被排除。
可视化编辑器: skillshare ui → Targets 页面 → "Customize filters" 按钮。
📖 Target 命令 · 过滤行为示例 · Configuration
另请参阅
- Filtering Skills — 场景驱动的操作指南