Grok Build Source Course · 12 / 21

Marketplace:탐색·설치·실행 계층 분리

카탈로그는 플러그인을 노출하고, 인스톨러는 복사 또는 클론을 수행하며, 런타임은 활성화 상태와 신뢰 여부를 판단합니다. 세 계층을 분리해야 플러그인 생태계의 실제 보안 경계를 파악할 수 있습니다.

Indexed + FallbackManifestInstall RegistryPer Plugin Root Trust
01 / OBJECTIVES

학습 목표

탐색 체인 복원

인덱스 우선, 파일시스템 폴백, manifest 파싱, 소스 우선순위를 설명합니다.

네 가지 상태 구분

탐색 가능·설치됨·활성화됨·신뢰됨을 구분하고, '설치됨' 하나로 모든 의미를 합치지 않도록 합니다.

실행 경계 도식화

플러그인이 미신뢰 상태일 때 skill, agent, hook, MCP, script의 처리 차이를 파악합니다.

02 / CORE VISUAL

카탈로그에서 런타임까지

03 / STRUCTURE

Marketplace와 Plugin의 실제 구조

MARKETPLACE

카탈로그는 "무엇이 있는지"를 담당합니다

marketplace-root/
├── .grok-plugin/
│   ├── marketplace.json
│   └── plugin-index.json
├── plugins/
│   └── sample-plugin/
└── default-skills/

스캐너는 인덱스를 먼저 읽고, 없거나 유효하지 않으면 plugins/*/를 스캔합니다. default-skills는 가상 플러그인으로 결과에 포함될 수 있습니다.

xai-grok-plugin-marketplace/src/scanner.rs · index.rs · catalog.rs
PLUGIN

플러그인은 "무엇을 포함하는지"를 담당합니다

sample-plugin/
├── plugin.json
├── skills/*/SKILL.md
├── commands/
├── agents/
├── hooks/hooks.json
├── .mcp.json
└── scripts/

plugin.json이 우선 manifest이며, .grok-plugin/plugin.json.claude-plugin/plugin.json은 대체 위치입니다. PluginManifest는 skills, commands, agents, hooks, MCP, LSP 경로를 오버라이드할 수 있으며, 파싱 후 경로가 플러그인 루트 내에 있는지 검증됩니다.

xai-grok-agent/src/plugins/manifest.rs · docs/hooks-and-plugins.md
04 / DISCOVERY

각각의 역할을 담당하는 두 탐색 체인

CLI override--plugin-dir
최고 소스 우선순위
Project.grok/plugins
.claude와 호환
User$GROK_HOME/plugins
설치된 플러그인
Registrymarketplace provenance
git / local 소스
Config path[plugins].paths
위치가 신뢰에 영향

핵심 구분: xai-grok-plugin-marketplace는 카탈로그·스캔·설치를 담당하고, xai-grok-agent::plugins는 런타임 탐색·중복 제거·이름 충돌·활성화·신뢰를 담당합니다. Marketplace에 항목이 있다고 해서 컴포넌트가 즉시 실행되는 것은 아닙니다.

05 / THREE GATES

가시성에서 실행 가능성까지의 세 가지 관문

1

소스와 경로

MarketplaceRelativePath는 절대 경로, 상위 디렉터리 순회, 범위를 벗어난 join을 거부합니다. 원격 항목은 git ref 또는 SHA로 고정할 수 있습니다.

2

활성화 상태

탐색 설정에서 enabled/disabled 목록을 관리합니다. 프로젝트 또는 사용자 범위는 기본적으로 disabled 목록에 들어가고, CLI override와 config path는 enabled에 들어갑니다. 사용자가 명시적으로 조정할 수 있습니다.

3

실행 신뢰

프로젝트 플러그인은 canonical plugin root 단위로 인가되며, 신뢰 레코드는 ~/.grok/trusted-plugins에 기록됩니다.

06 / TRUST

미신뢰 플러그인의 컴포넌트 매트릭스

컴포넌트
탐색
미신뢰 시 실행
Skills / Agents
메타데이터 목록 가능
메타데이터 수준 탐색만 허용
Hooks
manifest에서 식별 가능
로드·실행 차단
MCP Servers
설정 경로에서 식별 가능
명령 시작 차단
Scripts
플러그인 콘텐츠의 일부
실행 차단
FAIL CLOSED

경로 해석 실패 시 미신뢰로 처리

match dunce::canonicalize(plugin_root) {
    Ok(path) => self.trusted.contains(&path),
    Err(_) => false,
}
TRUST SCOPE

소스가 초기 신뢰 판단에 영향을 미칩니다

CLI override와 사용자 범위는 소스에서 trusted로 표시됩니다. 프로젝트 범위는 명시적 신뢰가 필요합니다. 사용자 홈 아래의 config path는 자동 신뢰될 수 있으며, 그 외 위치는 여전히 인가가 필요합니다.

crates/codegen/xai-grok-agent/src/plugins/trust.rs · discovery.rs
07 / SOURCE

인스톨러는 출처를 보존하고, 카탈로그는 규모를 보장하지 않습니다

PROVENANCE

설치 기록은 추적 가능합니다

로컬 Marketplace는 managed install storage를 통해 설치하고, 원격 항목은 Git URL, ref, SHA, subdir로 위치를 특정합니다. InstallRegistryMarketplaceProvenance를 기록합니다.

xai-grok-plugin-marketplace/src/installer.rs
EVIDENCE LIMIT

소스는 메커니즘을 증명하며 생태계 규모는 증명하지 않습니다

현재 코드로는 공식 소스 상수, 다중 소스, 카탈로그 인덱싱, 검색, 설치 흐름을 증명할 수 있습니다. 플러그인 수량, 활성 작성자, 감사 커버리지, 성장률은 증명할 수 없으며 이 페이지는 그런 추론을 하지 않습니다.

xai-grok-plugin-marketplace/src/lib.rs · types.rs
08 / LAB

수업 실습: 플러그인 위협 모델 작성

35 MIN

제출물
플러그인 스켈레톤과 위협 표

  1. skill, hook, MCP 설정이 포함된 최소 플러그인 디렉터리를 만들고 manifest를 작성하세요.
  2. Marketplace 인덱스 항목을 만들고, 인덱스가 없을 때 파일시스템 폴백이 어떻게 동작하는지 설명하세요.
  3. 탐색 가능·설치됨·활성화됨·신뢰됨 네 가지 상태를 나열하고 허용 전환을 도식화하세요.
  4. 경로 순회, 악성 프로젝트 Hook, 동명 플러그인 탈취 세 가지 공격을 설계하고 각각의 소스 수준 보호 장치를 찾으세요.
  5. 남은 위험 하나를 지적하고 설치 전 검토, SHA 고정, 최소 권한 중 하나를 제안하세요.
핵심 정리

플러그인 시스템의 핵심 가치는 기능 표면과 신뢰 표면이 함께 결정합니다. 카탈로그는 탐색을 해결하고, 인스톨러는 저장을 해결하며, 런타임 신뢰 관문이 어떤 컴포넌트가 실행 체인에 들어올 수 있는지 결정합니다.

소스 스냅샷 안내: 이 페이지는 로컬 grok-build-main 저장소의 xai-grok-plugin-marketplacexai-grok-agent::plugins를 기반으로 합니다. 디렉터리 트리는 교육적 표현을 위해 소스 코드 기본값을 통합했으며, 소스 우선순위·경로 제약·활성화 설정·신뢰 동작은 소스 코드 의미를 따릅니다.