^2.0 또는 ~2.1.0과 같은 의미 있는 버전 범위이며, 이는 테스트한 범위입니다.
이 페이지는 plugin.json에서 의존성을 선언하는 플러그인 작성자와 릴리스에 태그를 지정하는 마켓플레이스 유지 관리자를 위한 것입니다.
다음 경우는 다른 페이지에서 다룹니다:
- 의존성이 있는 플러그인 설치: 설치된 플러그인 관리를 참조하세요.
- 의존성 오류 읽기: 의존성 오류를 참조하세요.
- 플러그인 자체 코드가 필요로 하는 npm 및 Bun 패키지 선언: Node.js 패키지 의존성을 참조하세요.
의존성 선언
버전 제약이 없으면 의존성은 사용자가 다음에 업데이트할 때마다 마켓플레이스에서 게시하는 각 새 릴리스로 이동합니다. 해당 릴리스가 플러그인이 호출하는 MCP 도구의 이름을 바꾸면 업데이트하는 모든 사용자에 대해 플러그인이 중단됩니다. git 기반 소스의 의존성에~2.1.0과 같은 제약이 있으면 플러그인이 설치된 사용자는 의존성의 2.1.x 패치를 계속 받고 2.2로 이동하지 않습니다. 자신의 일정에 따라 업그레이드하려면 최신 릴리스에 대해 테스트한 후 더 넓은 제약으로 플러그인의 새 버전을 게시하세요.
버전 제약으로 의존성 선언
플러그인의.claude-plugin/plugin.json의 dependencies 배열에 의존성을 나열합니다. 다음 매니페스트는 버전이 지정되지 않은 의존성 하나와 제약이 있는 의존성 하나를 선언합니다:
.claude-plugin/plugin.json
"audit-logger"와 같은 플러그인 이름만 또는 "name@marketplace"로 다른 마켓플레이스에서 해결합니다. 단순 문자열을 사용하면 플러그인은 해당 플러그인의 마켓플레이스에서 제공하는 모든 버전에 의존합니다.
버전 제약을 설정하려면 다음 필드가 있는 객체를 사용합니다. 각 필드는 문자열입니다:
범위는
^2.0.0-0과 같은 사전 릴리스 접미사로 옵트인하지 않는 한 2.0.0-beta.1과 같은 사전 릴리스 버전과 일치하지 않습니다.
팀을 위해 플러그인 번들
엔지니어가 한 명령으로 선별된 플러그인 세트를 설치하도록 하려면 매니페스트에name과 dependencies 배열이 포함된 플러그인을 게시합니다. 플러그인 매니페스트는 name만 필요하므로 이는 유효한 플러그인이며, 설치하면 모든 의존성이 설치됩니다.
예를 들어 플랫폼 팀은 내부 마켓플레이스에서 역할별 번들을 게시할 수 있으므로 엔지니어는 각 플러그인을 별도로 설치하는 대신 하나의 claude plugin install을 실행합니다:
.claude-plugin/plugin.json
backend-standard 버전을 게시합니다. 마켓플레이스가 기본적으로 자동 업데이트하지 않을 때 엔지니어는 마켓플레이스에 대해 자동 업데이트를 켜거나 수동으로 업데이트합니다:
- 마켓플레이스에 대해 자동 업데이트 켜기: 다음 자동 업데이트는 번들을 새 버전으로 이동하고 추가하는 모든 의존성을 설치합니다.
- 수동으로 업데이트: 셸에서
claude plugin update backend-standard를 실행한 후 열린 세션에서/reload-plugins를 실행하여 새로 추가된 의존성을 설치합니다.
enabledPlugins에 추가합니다. 플러그인 사전 설치 및 필수화를 참조하세요.
다른 마켓플레이스에서 플러그인에 의존
기본적으로 Claude Code는 사용자가 이미 해당 의존성을 설치하고 동일한 범위에서 활성화하지 않는 한 선언 플러그인과 다른 마켓플레이스에서 의존성을 설치하지 않습니다. 이 기본값은 한 마켓플레이스가 사용자가 검토하지 않은 소스에서 플러그인을 자동으로 설치하는 것을 방지합니다. 설치를 허용하려면 대상 마켓플레이스의 이름을 루트 마켓플레이스의marketplace.json의 allowCrossMarketplaceDependenciesOn에 추가합니다. 루트 마켓플레이스는 사용자가 설치하는 플러그인을 호스팅하는 마켓플레이스입니다. 루트 마켓플레이스의 허용 목록만 적용됩니다.
다음 marketplace.json은 deploy-kit이 your-shared-marketplace에서 플러그인에 의존하도록 허용합니다:
.claude-plugin/marketplace.json
allowCrossMarketplaceDependenciesOn이 누락되었거나 대상 마켓플레이스를 포함하지 않으면 Claude Code는 의존성을 설치하지 않습니다. 의존성이 마켓플레이스 항목에 선언되면 설치 자체가 Dependency "audit-logger@your-shared-marketplace" (required by deploy-kit@your-marketplace) is in marketplace "your-shared-marketplace", which is not in the allowlist로 시작하는 메시지로 거부되고 설정할 필드의 이름을 지정합니다. plugin.json에 선언되면 설치는 의존성 없이 완료되고 플러그인은 로드되지 않습니다.
허용 목록 확인은 이미 활성화된 의존성에는 적용되지 않습니다. 사용자가 먼저 your-shared-marketplace에서 audit-logger를 자신의 범위에서 설치하면 deploy-kit은 허용 목록을 변경하지 않고 설치됩니다.
플러그인 및 해당 의존성을 로컬로 테스트
플러그인과 의존하는 플러그인을 동시에 개발하는 경우 셸에서 Claude Code를 시작하고--plugin-dir로 둘 다 로드합니다:
version필요 없음: 로컬plugin.json은 버전 제약이 로컬 복사본에 대해 확인되지 않으므로version도 필요하지 않습니다.- 마켓플레이스의 이름을 지정하는 항목: 마켓플레이스의 이름을 지정하는 항목도 Claude Code v2.1.242 이상에서 로컬 복사본과 일치합니다.
- 로컬 복사본을 비활성화했습니다: 플러그인은 다음 플러그인 로드에서 비활성화되고 오류는
is disabled — enable it or remove the dependency로 끝납니다. 오류가 의존성을<name>@inline으로 이름 지으면 해당 식별자는--plugin-dir복사본을 나타냅니다. - 의존성의
--plugin-dir플래그 없이 세션을 시작했습니다: 오류는 의존성이 설치되지 않았다고 보고합니다. 플래그를 다시 전달하거나 마켓플레이스에서 의존성을 설치합니다.
--plugin-dir에 한 번 전달할 수 있습니다. 폴더 자체가 플러그인이 아니면 Claude Code는 .claude-plugin/plugin.json이 있는 각 자식 폴더를 로드합니다. Claude Code v2.1.265 이상이 필요합니다.
다른 사용자가 의존하는 플러그인 릴리스하기
버전 제약이 있는 다른 플러그인이 의존하는 플러그인을 유지 관리하는 경우, 해당 제약이 해결될 수 있도록 릴리스에 태그를 지정합니다. 제약은 플러그인을 호스팅하는 저장소의 git 태그에 대해 해결됩니다. 플러그인의 플러그인 소스가marketplace.json에서 가리키는 저장소에 태그를 지정합니다:
github,url, 또는git-subdir소스: 플러그인 자체 저장소이므로 플러그인 작성자가 태그를 생성합니다./plugins/secrets-vault와 같은 상대 경로: 마켓플레이스 저장소이므로 마켓플레이스 유지 관리자가 태그를 생성합니다
릴리스 태그 생성
각 릴리스에<plugin-name>--v<version> 형식으로 태그를 지정합니다. 여기서 <version>은 해당 커밋의 plugin.json에 있는 version 필드와 일치합니다. plugin-name 접두사를 사용하면 하나의 마켓플레이스 저장소에서 독립적인 버전 기록을 가진 여러 플러그인을 호스팅할 수 있습니다.
플러그인 디렉터리에서 origin 원격이 푸시된 태그를 수신하도록 구성되어 있을 때, claude plugin tag를 사용하여 태그를 생성합니다:
- 플러그인 유효성 검사
- 플러그인 디렉터리가 마켓플레이스 체크아웃 내부에 있을 때
plugin.json과 마켓플레이스 항목이 버전에 대해 동의하는지 확인 - 플러그인 디렉터리 아래의 깨끗한 작업 트리 필요
- 태그가 이미 존재하면 거부
Created tag secrets-vault--v2.1.0을 출력합니다. --push를 사용하면 Pushed to origin도 출력합니다. --push 없이는 직접 실행할 git push 명령을 출력합니다.
--dry-run을 전달하여 아무것도 생성하지 않고 계획을 확인합니다.
claude plugin tag 참조에 나머지 플래그가 나열되어 있습니다.
plugin.json의 version과 마켓플레이스 항목의 버전을 직접 동기화된 상태로 유지하는 한, git tag secrets-vault--v2.1.0을 직접 실행할 수도 있습니다.
비 git 소스를 가진 종속성 제약
태그 기반 해결은 git 기반 소스에만 적용됩니다.npm, archive, 또는 command 플러그인 소스를 가진 종속성의 경우, 제약은 어떤 버전을 가져올지 제어하지 않습니다. 플러그인이 로드될 때 여전히 확인되며, 설치된 버전이 제약을 만족하지 않으면 종속 플러그인이 비활성화됩니다.
npm, archive, 및 command 소스의 경우, 확인되는 버전은 종속성의 plugin.json에 있는 version입니다. 해당 종속성을 제약하기 전에 여기에 버전을 설정합니다. 버전을 설정하지 않는 plugin.json은 어떤 제약도 만족하지 않기 때문입니다.
Claude Code는 command 소스를 가진 종속성을 직접 설치하지 않으므로 사용자가 먼저 설치합니다. 또한 종속성의 headersHelper를 실행하지 않으므로 사용자도 마켓플레이스 항목이 하나를 설정한 종속성을 플러그인을 설치하기 전에 설치합니다.
claude plugin install 외에도 이러한 작업은 선언된 모든 누락된 종속성을 설치하며, command 및 headersHelper 제한이 이들에도 적용됩니다:
/reload-plugins- 종속 플러그인의 마켓플레이스 자동 업데이트
- 종속 플러그인에서
claude plugin install다시 실행 claude plugin marketplace add
사용자를 위해 의존성이 어떻게 작동하는지
이 섹션은 플러그인이 다른 플러그인과 함께 설치되면 Claude Code가 선언한 제약을 해결, 확인 및 결합하는 방법을 설명합니다.제약이 태그에 대해 어떻게 해결되는지
사용자가{ "name": "secrets-vault", "version": "~2.1.0" }을 선언하는 플러그인을 설치하면 의존성은 secrets-vault를 호스팅하는 저장소에서 ~2.1.0을 만족하는 최고 secrets-vault--v 태그에서 설치됩니다. 범위를 만족하는 태그가 없으면 설치는 실패하거나 마켓플레이스의 현재 복사본을 사용합니다:
- 자체 저장소가 있는 플러그인: 설치는
Dependency "secrets-vault@your-marketplace" has no git tag satisfying을 포함하는 메시지로 실패합니다. - 상대 경로로 참조되는 플러그인: 설치는 대신 마켓플레이스의 현재 복사본을 사용하고 플러그인이 로드될 때 제약이 확인됩니다. 해당 복사본이 범위를 벗어나면 종속 플러그인은 비활성화된 상태로 유지되고
claude plugin list는Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0을 표시합니다.
해결된 버전 확인
제약이 해결된 버전을 확인하려면 셸에서claude plugin list를 실행합니다. 태그 해결 의존성은 2.1.0-8713c5b11005와 같은 12자 커밋 접미사로 버전을 표시합니다.
제약 확인은 plugin.json의 version이 뒤처져 있더라도 태그의 버전을 사용합니다.
태그를 다른 커밋으로 강제 이동하면 다음 설치는 오래된 캐시된 복사본을 재사용하는 대신 해당 커밋의 내용을 가져옵니다. 플러그인의 버전이 캐시 키가 되는 방법은 버전 및 업데이트를 참조하세요.
여러 플러그인의 제약 결합
여러 설치된 플러그인이 동일한 의존성을 제약하면 의존성은 모든 범위를 만족하는 최고 버전으로 해결됩니다. 일반적인 조합은 다음과 같이 해결됩니다:
자동 업데이트는 마켓플레이스의 최신 버전이 아니라 모든 설치된 플러그인의 범위를 만족하는 최고 git 태그에서 제약된 의존성을 가져옵니다. 설치된 플러그인의 범위가 겹치지 않으면 자동 업데이트는 해당 의존성을 현재 버전에 유지하고
/plugin 오류 탭은 제약 플러그인의 이름을 지정하는 항목을 표시합니다. 범위가 겹치지만 범위에 태그가 없으면 자동 업데이트는 마켓플레이스의 현재 복사본을 가져오고 해당 복사본의 version이 설치된 플러그인의 범위를 벗어나면 업데이트를 건너뜁니다.
사용자가 의존성을 제약하는 마지막 플러그인을 제거하면 의존성은 더 이상 버전 범위로 제약되지 않으며 다음 업데이트에서 마켓플레이스 항목 추적을 재개합니다.
참고 항목
claude plugin prune: 플러그인이 더 이상 필요하지 않은 자동 설치 의존성 제거- 마켓플레이스 호스팅: 릴리스 채널 및 다른 플러그인 권장