# CLI-Anything (HKUDS) 분석 보고서

> 분석일: 2026-03-10 | 작업: task-417 | 분석자: 헤르메스(개발1팀)

## 1. CLI-Anything 기능 분석

### 개요
- **GitHub**: https://github.com/HKUDS/CLI-Anything
- **Stars**: 1,080+ / **Forks**: 106 (2026-03-10 기준, 공개 2일 만에 급성장)
- **언어**: Python 3.10+
- **라이선스**: MIT
- **슬로건**: "Making ALL Software Agent-Native"

### 핵심 기능
GUI 소프트웨어를 AI 에이전트가 CLI로 제어할 수 있도록 변환하는 **Claude Code 플러그인**.
소스코드를 분석하여 자동으로 CLI 래퍼(harness)를 생성한다.

### 7단계 파이프라인
1. **Analyze** — 소스코드 스캔, GUI 액션 → API 호출 매핑
2. **Design** — 커맨드 그룹 설계, 상태 모델, 출력 형식 정의
3. **Implement** — Click 기반 CLI 구현 (REPL + 서브커맨드 듀얼 모드)
4. **Plan Tests** — TEST.md에 유닛/E2E 테스트 계획 작성
5. **Write Tests** — pytest 기반 테스트 구현
6. **Document** — 테스트 결과 문서화
7. **Publish** — setup.py 생성, pip install -e . 로 PATH 등록

### 아키텍처 핵심
- **진짜 소프트웨어 통합**: 소프트웨어를 재구현하지 않고, 실제 백엔드를 호출 (예: LibreOffice headless, Blender bpy, melt 렌더러)
- **프로젝트 파일 생성**: ODF, MLT XML, SVG 등 유효한 중간 파일을 생성하고 실제 소프트웨어에 넘겨 렌더링
- **듀얼 모드**: Stateful REPL (대화형) + Subcommand CLI (스크립팅/파이프라인)
- **--json 플래그**: 모든 커맨드에 구조화된 JSON 출력 지원 → 에이전트 소비용
- **ReplSkin**: 통일된 REPL 인터페이스 (브랜딩, 프롬프트, 컬러, 진행바 등)
- **네임스페이스 패키지**: `cli_anything.<software>` 구조, 충돌 방지

### 대상 소프트웨어
- **데스크톱 GUI 앱**: GIMP, Blender, Inkscape, Audacity, LibreOffice, OBS Studio, Kdenlive, Shotcut, Draw.io
- **웹 앱**: 가능하지만 주 타겟은 아님 (로컬 설치형 소프트웨어가 주력)
- **AI/ML 플랫폼**: ComfyUI, Stable Diffusion WebUI 등도 대상으로 언급
- 기본적으로 **소스코드 접근 가능한** 소프트웨어 대상

### 기술 스택
- **Python 3.10+**, Click (CLI 프레임워크), pytest
- **Claude Code 플러그인** 형태로 배포 (Claude Code의 `/plugin` 시스템 활용)
- **LLM 활용**: CLI 생성 자체가 Claude Code 에이전트가 수행 (HARNESS.md가 SOP 역할)
- 즉, CLI-Anything 자체는 코드 생성 도구가 아니라 **Claude Code가 따라야 할 방법론(SOP) + 플러그인**

### 제한사항/한계점
- **Claude Code 의존**: Claude Code 플러그인으로만 동작. 독립 실행 불가
- **소스코드 필요**: 바이너리만 있는 소프트웨어는 분석 불가
- **실제 소프트웨어 설치 필요**: CLI는 래퍼일 뿐, 원본 소프트웨어가 없으면 무용
- **생성 비용**: 하나의 CLI를 만드는 데 Claude Code의 상당한 토큰 소비 (7단계 전체 수행)
- **수동 검증 필요**: 자동 생성된 CLI가 모든 케이스를 커버하는지는 보장 어려움
- **GUI 전용 기능**: 일부 GUI 전용 인터랙션(드래그&드롭, 실시간 프리뷰)은 CLI로 변환 불가

---

## 2. 우리 시스템 적용 가능성 분석

### 우리 시스템 구조 요약
- **아누(Opus)**: 개발실장, 오케스트레이터 (dispatch.py)
- **1팀/2팀**: Claude Code (Opus) + Task tool 서브에이전트 코워크
- **3팀**: OpenClaw → GLM-5 순차작업
- **dispatch.py**: cokacdir --cron으로 팀장 봇에 작업 전달
- **워크스페이스**: /home/jay/workspace/ (Python 기반)
- **프로젝트**: InsuRo (React+Vite+Supabase), InsuWiki (Next.js+Firebase)

### 시나리오별 적용 가능성

#### 시나리오 A: InsuRo/InsuWiki를 CLI로 제어
- **적용 가능성: 낮음**
- CLI-Anything은 데스크톱 GUI 앱 → CLI 변환에 특화
- 웹 앱은 이미 API 엔드포인트를 가지고 있어 CLI 래핑의 실익이 적음
- InsuRo/InsuWiki는 Supabase/Firebase를 통해 이미 프로그래매틱 접근 가능
- 빌드/배포는 npm/yarn/pnpm CLI로 이미 제어 가능

#### 시나리오 B: dispatch/팀장 시스템에 CLI-Anything 통합
- **적용 가능성: 낮음**
- 우리 시스템은 이미 CLI 기반 (cokacdir, dispatch.py, python scripts)
- CLI-Anything이 해결하는 문제 = "GUI만 있고 CLI가 없는 소프트웨어"
- 우리 오케스트레이션은 이미 CLI 네이티브, 변환할 것이 없음

#### 시나리오 C: 새 프로젝트 온보딩 시 자동 CLI 래핑
- **적용 가능성: 중간 (조건부)**
- 새 프로젝트가 데스크톱 GUI 앱이라면 유용
- 하지만 현재 우리 프로젝트는 모두 웹 앱 → 해당사항 없음
- 향후 데스크톱 앱 프로젝트가 생기면 재검토 가치 있음

#### 시나리오 D: 에이전트가 외부 도구를 CLI로 조작
- **적용 가능성: 중간~높음 (가장 유망)**
- 예시: 에이전트가 GIMP으로 이미지 편집, LibreOffice로 문서 생성, Draw.io로 다이어그램 작성
- Claude Code가 이미 bash를 통해 CLI 도구 사용 가능하지만, CLI-Anything은 더 구조화된 인터페이스 제공
- **단, 현재 우리 워크플로우에서 이런 요구가 발생하지 않고 있음**

### 핵심 대안: Claude Code는 이미 CLI 도구를 사용할 수 있다
- Claude Code는 Bash tool로 `ffmpeg`, `imagemagick`, `pandoc` 등 기존 CLI 도구를 직접 호출 가능
- CLI-Anything이 제공하는 가치 = "CLI가 없는 GUI 앱에 CLI를 만들어주는 것"
- 대부분의 전문 도구는 이미 자체 CLI를 가지고 있음 (ffmpeg, imagemagick, pandoc, wkhtmltopdf 등)
- CLI-Anything이 필요한 케이스 = GIMP, Blender 같은 "GUI만 있는" 전문 소프트웨어

---

## 3. 기대효과 + 리스크

### 도입 시 기대효과
- **GUI-only 소프트웨어 활용**: GIMP, Blender, Draw.io 등을 에이전트가 프로그래매틱하게 조작 가능
- **자동 문서화**: CLI 생성 시 --help, TEST.md 등이 자동 생성되어 도구 사용법이 명확
- **JSON 출력**: 에이전트 간 데이터 교환에 구조화된 출력 활용 가능
- **방법론 참고**: HARNESS.md의 7단계 파이프라인은 CLI 도구 설계 방법론으로서 참고 가치 있음

### 도입 비용/복잡도
- **Claude Code 플러그인 시스템 필요**: 현재 우리 Claude Code 환경에서 플러그인 지원 여부 확인 필요
- **대상 소프트웨어 설치 필요**: CLI 래퍼는 원본 소프트웨어 없이 무용
- **토큰 비용**: CLI 하나 생성에 Claude Code의 상당한 토큰 소비 (7단계 전체 파이프라인)
- **유지보수 부담**: 원본 소프트웨어 업데이트 시 CLI 래퍼도 갱신 필요

### 현재 시스템과의 충돌 가능성
- **충돌 위험 낮음**: CLI-Anything은 독립적 도구이므로 기존 시스템에 영향 없음
- 단, Claude Code 플러그인 시스템 도입 시 기존 스킬/프롬프트 구조와의 관계 정리 필요

### 대안
- **기존 CLI 도구 직접 사용**: ffmpeg, imagemagick, pandoc 등 → 추가 래핑 불필요
- **MCP 서버**: GUI 앱을 MCP 서버로 래핑하는 방식도 가능 (다만 CLI보다 복잡)
- **직접 스크립트 작성**: 필요한 기능만 Python 스크립트로 래핑 (풀 CLI보다 경량)

---

## 4. 결론 및 추천

### 판정: **보류** (현 시점 도입 불필요, 향후 재검토)

### 판단 근거

**도입이 불필요한 이유:**
1. **현재 프로젝트와 무관**: InsuRo, InsuWiki 모두 웹 앱으로, CLI-Anything의 주 대상(데스크톱 GUI 앱)과 맞지 않음
2. **이미 CLI 네이티브**: 우리 시스템(dispatch, cokacdir, scripts)은 이미 CLI 기반으로 동작
3. **Claude Code의 기존 능력으로 충분**: Bash tool로 기존 CLI 도구를 직접 호출 가능
4. **ROI 부족**: 도입 비용(플러그인 설정, 소프트웨어 설치, 토큰 비용) 대비 현재 얻을 수 있는 이점이 제한적

**재검토할 시점:**
- 데스크톱 GUI 앱 프로젝트가 시작될 때 (GIMP, Blender 등 활용 필요 시)
- 이미지/영상/문서 자동 생성 워크플로우가 필요할 때
- Claude Code 플러그인 마켓플레이스가 성숙했을 때

**참고할 가치:**
- HARNESS.md의 CLI 설계 방법론은 우리가 자체 CLI 도구를 만들 때 참고할 만함
- 특히 "듀얼 모드(REPL + Subcommand)", "--json 출력", "테스트 파이프라인" 패턴은 범용적으로 활용 가능
- ReplSkin 패턴도 우리 내부 CLI 도구의 UX 개선에 참고 가능
