콘텐츠로 이동

Primitives Plugins

bonie(scaffold/orchestration)과 todo(phase-based task management) — 어떤 프로젝트에서든 동작하는 Layer 1 핵심 플러그인.

Bounded context

  • Type — Core
  • Sibling contexts — 모든 카테고리 플러그인이 이에 의존
  • Location in codebaseplugins/primitives/

Why this domain exists

모든 Bonie 플러그인이 전제하는 공통 워크플로우(.claude/ 구조, TODO.md 기반 진행 관리)를 하나의 domain에서 소유한다. 이를 분리하지 않으면 각 카테고리 플러그인이 초기화/진행 관리 로직을 개별 구현해야 하며, 일관성이 깨진다.


bonie 플러그인

Core scaffold + orchestration. 단일 진입점 /bonie 에서 서브커맨드로 분기.

Directory structure

plugins/primitives/bonie/
├── .claude-plugin/
│   └── plugin.json
├── skills/
│   └── bonie/
│       └── SKILL.md              # /bonie <subcommand>
└── settings.json                 # agent: bonie-lead 지정

Subcommands

Command Description
/bonie apply [--force] .claude/ 스캐폴딩 + 프로젝트 초기화
/bonie ps [-w] 플러그인 상태 조회 (kubectl 스타일)
/bonie (no args) 사용법 출력

Why 단일 진입점 — 서브커맨드 패턴으로 진입점 하나에서 확장. kubectl처럼 /bonie logs, /bonie config 등 자연스럽게 추가 가능.

Why disable-model-invocation: true — 프로젝트 초기화와 상태 조회는 의도적 행위. Claude가 임의로 실행해서는 안 된다.

/bonie apply

프로젝트에 .claude/ 디렉토리를 스캐폴딩: 1. 환경 감지 (package.json, go.mod, Cargo.toml 등) 2. 인터랙티브 설정 (스택 확인, 플러그인 선택) 3. 디렉토리/파일 생성 (기존 파일 보존, 누락분만 추가) 4. .gitignore 업데이트 5. 완료 보고 + /todo:plan 안내

--force: 기존 파일 포함 전체 재생성 (확인 후).

/bonie ps

NAME          STATUS    CATEGORY     COMPONENTS
bonie         Active    primitives   1 skill
todo          Active    primitives   1 skill, 1 hook
doc           Active    primitives   1 skill, 1 agent
...

STACK DETECTED    typescript, react
TODO PROGRESS     P2/4  3/8 tasks

-w: wide 출력, DESCRIPTION 컬럼 추가.

settings.json

{
  "agent": "bonie-lead"
}

bonie 플러그인 활성화 시 bonie-lead agent를 메인 세션 agent로 설정.


todo 플러그인

Directory structure

plugins/primitives/todo/
├── .claude-plugin/
│   └── plugin.json
└── skills/
    └── todo/
        └── SKILL.md                   # /todo

/todo 커맨드

단일 커맨드. 사용자와 목표 합의 → 페이즈별 TODO.md 작성.

/todo                    # 인터랙티브로 목표 확인
/todo "인증 모듈 구현"     # 목표 직접 지정

흐름: 1. 목표 확인 (인자 또는 AskUserQuestion) 2. 코드베이스 탐색으로 맥락 파악 3. 페이즈 구성 (의존성 낮은 순 정렬) 4. AskUserQuestion으로 계획 확인/수정 5. .claude/TODO.md에 작성

TODO.md schema

# TODO — [프로젝트명]

## Phase 1: [페이즈 제목]
> Goal: [이 페이즈에서 달성할 것]

- [x] task 1 설명
- [ ] task 2 설명

## Phase 2: [페이즈 제목]
> Goal: [이 페이즈에서 달성할 것]

- [ ] task 1 설명

페이즈 완료 처리

  • 페이즈의 모든 task가 [x]가 되면 AskUserQuestion으로 확인
  • 사용자 승인 후 다음 페이즈로 진행
  • 자동 갱신 없음 — 항상 사용자 확인 필수

Invariants

  • Phase는 의존성 낮은 순으로 강제 정렬 — 계획 수립 시점에 검증
  • Phase N 미완료 시 Phase N+1 시작 불가
  • GFM 호환 checkbox만 사용 (- [x], - [ ])
  • Linear 동기화는 collaboration/linear 플러그인이 담당

Statusline

P2/4 ████░░ 3/8
│     │      └── 현재 페이즈 완료/전체 task
│     └── 시각적 진행 바
└── 현재 페이즈 / 전체 페이즈

statusline UI는 개발 진행하며 조정. 초기에는 단순 텍스트 형태.

Failure modes

  • TODO.md가 없을 때 → hook이 graceful하게 무시, statusline 비표시
  • TODO.md 포맷이 잘못되었을 때 → 파싱 실패 시 stderr 경고만, 블로킹 안 함
  • 수동으로 TODO.md를 편집하여 스키마가 깨졌을 때 → /todo:plan으로 재생성 안내

See also