콘텐츠로 이동

ADR-0002: Main-Bundle Structure

We will use a single marketplace containing multiple independent plugins, installed and activated as a bundle.

Status

Accepted

  • Decided at — 2026-04-15
  • Decided by — pabloism0x

Context

Bonie는 20+ 플러그인으로 구성된다. 사용자가 각각을 개별 설치/관리하면 번거롭고, 하나의 거대한 플러그인에 모든 것을 합치면 관심사 분리가 어렵다. 두 극단 사이의 균형이 필요하다.

Decision

Main-bundle 구조를 채택한다.

  • bonie marketplace 하나를 설치하면 marketplace.json의 모든 plugins가 함께 활성화
  • 각 플러그인은 독립 plugin.json을 가짐 (관심사 분리)
  • primitives/ 플러그인은 항상 활성화 (core)
  • 카테고리 플러그인(lang/, devops/ 등)은 개별 비활성화 가능
  • 카테고리 간 교차 의존 금지 (primitives에만 의존 가능)

Consequences

Positive

  • 설치 한 번으로 전체 스위트 사용 가능
  • 각 플러그인의 독립성 유지
  • 불필요한 플러그인은 비활성화 가능

Negative

  • 사용하지 않는 플러그인도 함께 설치됨
  • 플러그인 간 의존성이 암묵적 (명시적 의존성 선언 없음)

Neutral

  • marketplace 단위로만 버전 관리 (개별 플러그인 버전은 내부용)

Alternatives considered

Alternative 1: 개별 플러그인 설치

Pros - 필요한 것만 설치 가능 - 각 플러그인 독립 버전 관리

Cons - 20+ 플러그인 개별 설치/업데이트 관리 부담 - 팀 간 설치 구성 불일치 가능

Why rejected — 관리 오버헤드가 번들의 약간의 불필요 포함보다 크다.

Alternative 2: 단일 거대 플러그인

Pros - 구조가 단순 - 네임스페이싱 불필요

Cons - 관심사 분리 불가능 - 특정 카테고리만 비활성화 불가 - plugin.json이 비대

Why rejected — 스택별 skill이 수십 개로 늘어나면 유지보수가 불가능해진다.

Compliance

  • marketplace.json에 새 플러그인 추가 시 category 필드 필수
  • 카테고리 간 교차 의존 코드 리뷰에서 확인

Revisit triggers

  • 플러그인 수가 50개를 넘어 설치 시간이 문제될 때
  • Claude Code가 플러그인 간 명시적 의존성 선언을 지원할 때

References

  • ADR-0001 — Auto-Load First (auto-load와 번들이 결합하여 "설치만 하면 동작" 달성)