본문으로 건너뛰기

필터링 레퍼런스

어떤 Skill이 어떤 Target에 도달할지를 제어하는 세 가지 필터링 레이어에 대한 완전한 명세입니다.

빠른 가이드가 필요하신가요?

시나리오 중심의 가이드는 Filtering Skills를 참고하세요.

개요

레이어범위설정 위치문법평가 시점
.skillignore모든 Target에서 숨김Source 디렉터리 또는 Tracked 저장소 루트gitignoreDiscovery
SKILL.md metadata.targets나열된 Target으로만 Skill 제한Skill별 frontmatterYAML 목록Sync (Discovery 시 파싱)
Agent targets나열된 Target으로만 Agent 제한Agent별 frontmatterYAML 목록Sync (Discovery 시 파싱)
Target include/excludeTarget별, 리소스별config.yaml 또는 CLI 플래그Go filepath.Match globSync
Sync 모드 주의사항

이 세 가지 레이어는 모두 mergecopy Sync 모드에만 적용됩니다. symlink 모드에서는 전체 Source 디렉터리가 하나의 단위로 링크되므로 — Skill별 필터링은 효과가 없습니다.

평가 순서와 우선순위

Skill이 Target에 도달하려면 모든 레이어를 통과해야 합니다:

  1. .skillignore — Discovery 시 평가됩니다. 일치하는 Skill은 Sync 파이프라인에 진입하지 않습니다.
  2. Target include/exclude — Sync 시(FilterSkills) 평가됩니다. Skill은 Discovery되지만 일치하지 않는 Target에서는 건너뜁니다.
  3. SKILL.md metadata.targets — Sync 시(FilterSkillsByTarget) 평가됩니다. Skill은 선언된 Target으로만 제한됩니다.

.skillignore

위치:

  • Source 루트: ~/.config/skillshare/skills/.skillignore — 모든 Skill에 적용
  • Tracked 저장소 루트: _team-repo/.skillignore — 해당 저장소 내에서만 적용

문법: 전체 gitignore*(단일 세그먼트), **(임의 깊이), ?, [abc], !pattern(부정), /pattern(경로 고정), pattern/(디렉터리 전용).

.skillignore.local: .skillignore와 함께 위치시킵니다. 패턴은 기본 파일 뒤에 추가되며 — 마지막에 일치하는 규칙이 우선합니다. !pattern으로 제외를 해제할 수 있습니다. 이 파일은 커밋하지 마세요.

CLI에서의 표시:

명령어출력
skillshare sync개수 + Skill 이름
skillshare status --json패턴과 제외된 목록이 담긴 source.skillignore 객체
skillshare doctor패턴 개수와 제외된 개수

📖 File structure reference

SKILL.md targets 필드

형식: 최상위 또는 metadata 아래에 중첩:

# 권장
metadata:
targets: [claude, cursor]

# 레거시 대체 형식
targets: [claude, cursor]

동작: 화이트리스트 — 해당 Skill은 나열된 Target에만 Sync됩니다. 필드를 생략하면 모든 Target에 Sync됩니다. metadata.targets와 최상위 targets가 모두 존재하는 경우 metadata.targets가 우선합니다.

별칭(Alias): Target 이름은 별칭을 지원합니다. claudeclaude-code로 설정된 Target과도 일치합니다. Supported Targets를 참고하세요.

📖 Skill format — targets field

Agent도 Agent frontmatter의 최상위 targets 목록을 통해 동일한 화이트리스트를 지원합니다. 필드가 없는 Agent는 Agent를 지원하는 모든 Target에 Sync됩니다. 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-*"

저장 위치: Skill의 경우 config.yamltargets.<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 command · Filter behavior examples · Configuration

참고