Skip to content

Commit 148260b

Browse files
solzipclaude
andcommitted
docs: Phase D 배포 전략 Plan 문서
3단계 점진적 배포: 1. 커뮤니티 마켓플레이스 (즉시, .claude-plugin/) 2. PyPI 정식 배포 (pip install claude-diary) 3. 공식 Anthropic 마켓플레이스 (안정화 후) 핵심 원칙: 토큰 사용 제로, pip+플러그인 이중 배포 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c1b8cfb commit 148260b

File tree

1 file changed

+290
-0
lines changed

1 file changed

+290
-0
lines changed

docs/plans/phase-d-distribution.md

Lines changed: 290 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,290 @@
1+
# Phase D — 배포 전략 (Distribution Strategy)
2+
3+
## Executive Summary
4+
5+
| 관점 | 내용 |
6+
|------|------|
7+
| **Problem** | 코드는 완성되었지만, 사용자에게 도달하는 경로가 GitHub clone뿐 |
8+
| **Solution** | 커뮤니티 마켓플레이스 + PyPI + 공식 마켓플레이스 3단계 배포 |
9+
| **Function UX Effect** | `/plugin install` 또는 `pip install` 한 줄로 즉시 사용 가능 |
10+
| **Core Value** | Claude Code 생태계 최초의 작업일지 도구로 포지셔닝 |
11+
12+
> Claude Code Working Diary v4.x → v5.0
13+
> 작성일: 2026-03-17
14+
> 상태: Plan
15+
> 선행 조건: Phase A + B + C 완료
16+
17+
---
18+
19+
## 1. 개요
20+
21+
### 현재 상태
22+
- v4.0.0 코드 완성 (코어 + CLI + 5 exporters + 팀 기능 + 보안 + 40 테스트)
23+
- GitHub public repo에 공개됨
24+
- 설치 방법: `git clone``install.sh` 또는 소스 직접 사용
25+
- **문제: 발견성 제로, 설치 허들 높음**
26+
27+
### 목표
28+
사용자가 **한 줄로 설치**하고, **검색으로 발견**할 수 있게 만든다.
29+
30+
### 핵심 원칙
31+
- **토큰/API 사용 제로** — 배포 과정에서도 사용자에게 비용 발생 없음
32+
- **점진적 배포** — 커뮤니티 → PyPI → 공식, 각 단계에서 피드백 수집
33+
- **이중 배포** — pip과 플러그인 동시 지원, 사용자가 선택
34+
35+
---
36+
37+
## 2. 배포 경로 비교
38+
39+
| 경로 | 설치 방법 | 대상 | 발견성 | 통제력 | 리스크 |
40+
|------|-----------|------|--------|--------|--------|
41+
| GitHub (현재) | `git clone` | 개발자 | 낮음 | 완전 | 없음 |
42+
| 커뮤니티 마켓플레이스 | `/plugin marketplace add` + `/plugin install` | Claude Code 사용자 | 중간 | 완전 | 없음 |
43+
| PyPI | `pip install claude-diary` | Python 개발자 | 높음 | 완전 | 낮음 |
44+
| 공식 Anthropic 마켓플레이스 | `/plugin install` (기본 목록) | 전체 Claude Code 사용자 | 최고 | 낮음 | 거절 가능 |
45+
46+
---
47+
48+
## 3. Sprint 구성
49+
50+
### Sprint D-1 — Claude Code 플러그인 변환 (커뮤니티 마켓플레이스)
51+
52+
#### 3.1.1 플러그인 구조 추가
53+
54+
```
55+
.claude-plugin/
56+
├── plugin.json ← 매니페스트
57+
└── hooks.json ← Stop Hook 자동 등록
58+
```
59+
60+
**plugin.json:**
61+
62+
```json
63+
{
64+
"name": "working-diary",
65+
"description": "Auto-generate work diaries from Claude Code sessions (KO/EN)",
66+
"version": "4.0.0",
67+
"author": {
68+
"name": "solzip",
69+
"url": "https://github.com/solzip"
70+
},
71+
"repository": "https://github.com/solzip/claude-code-hooks-diary",
72+
"license": "MIT",
73+
"keywords": ["diary", "productivity", "hooks", "work-log", "automation"],
74+
"engines": {
75+
"claude-code": ">=2.1.0"
76+
}
77+
}
78+
```
79+
80+
**hooks.json:**
81+
82+
```json
83+
{
84+
"hooks": {
85+
"Stop": [
86+
{
87+
"hooks": [
88+
{
89+
"type": "command",
90+
"command": "python -m claude_diary.hook"
91+
}
92+
]
93+
}
94+
]
95+
}
96+
}
97+
```
98+
99+
#### 3.1.2 커뮤니티 마켓플레이스 호스팅
100+
101+
- GitHub repo 자체가 마켓플레이스 역할
102+
- 사용자 설치 방법:
103+
104+
```bash
105+
# 1. 마켓플레이스 추가
106+
/plugin marketplace add https://github.com/solzip/claude-code-hooks-diary
107+
108+
# 2. 플러그인 설치
109+
/plugin install working-diary
110+
```
111+
112+
#### 3.1.3 플러그인 설치 시 자동 수행
113+
114+
- `~/.claude/settings.json`에 Stop Hook 자동 등록
115+
- `pip install claude-diary` 안내 (또는 자동 실행)
116+
- `claude-diary init` 트리거
117+
118+
---
119+
120+
### Sprint D-2 — PyPI 정식 배포
121+
122+
#### 3.2.1 사전 준비
123+
124+
- [ ] `pyproject.toml` 최종 점검 (version, description, classifiers)
125+
- [ ] `README.en.md`를 PyPI 표시용으로 설정
126+
- [ ] `CHANGELOG.md` 업데이트
127+
- [ ] 로컬 빌드 테스트: `python -m build`
128+
- [ ] TestPyPI 배포: `twine upload --repository testpypi dist/*`
129+
- [ ] TestPyPI에서 설치 테스트: `pip install -i https://test.pypi.org/simple/ claude-diary`
130+
131+
#### 3.2.2 정식 배포
132+
133+
- [ ] PyPI 계정 생성 + API 토큰 발급
134+
- [ ] GitHub Actions release.yml에 PyPI 토큰 설정 (repository secret)
135+
- [ ] `git tag v4.1.0 && git push --tags` → 자동 배포 트리거
136+
- [ ] PyPI 페이지 확인: https://pypi.org/project/claude-diary/
137+
138+
#### 3.2.3 PyPI 페이지 최적화
139+
140+
- 프로젝트 설명 (영어)
141+
- 키워드: claude-code, productivity, work-diary, automation, hooks
142+
- Classifiers 확인
143+
- 홈페이지/Repository URL 확인
144+
145+
---
146+
147+
### Sprint D-3 — GitHub 최적화 + 홍보
148+
149+
#### 3.3.1 GitHub Repo 최적화
150+
151+
- [ ] Topics 설정: `claude-code`, `productivity`, `work-diary`, `automation`, `hooks`, `developer-tools`, `python`
152+
- [ ] About 설정: "Auto-generate work diaries from Claude Code sessions (KO/EN)"
153+
- [ ] Social preview 이미지 (1280×640)
154+
- [ ] Badges 추가 (README):
155+
- ![PyPI](https://img.shields.io/pypi/v/claude-diary)
156+
- ![CI](https://github.com/solzip/claude-code-hooks-diary/actions/workflows/ci.yml/badge.svg)
157+
- ![License](https://img.shields.io/github/license/solzip/claude-code-hooks-diary)
158+
- ![Python](https://img.shields.io/pypi/pyversions/claude-diary)
159+
160+
#### 3.3.2 GIF 데모
161+
162+
30초 데모 GIF 생성:
163+
1. Claude Code 세션 → 작업 수행
164+
2. 세션 종료 → 일지 자동 생성 확인
165+
3. `claude-diary search` → 결과 표시
166+
4. `claude-diary stats` → 대시보드 표시
167+
168+
도구: [asciinema](https://asciinema.org/) 또는 [VHS](https://github.com/charmbracelet/vhs)
169+
170+
#### 3.3.3 홍보 채널
171+
172+
| 채널 | 형태 | 시기 |
173+
|------|------|------|
174+
| Claude Code Discord/Forum | 소개 포스트 | PyPI 배포 후 |
175+
| Reddit r/ClaudeAI | 사용 사례 포스트 | 피드백 수집 후 |
176+
| GitHub Discussions | FAQ + 사용 가이드 | 즉시 |
177+
| 개인 블로그/X | 만든 과정 + 사용법 | 선택 |
178+
179+
---
180+
181+
### Sprint D-4 — 공식 마켓플레이스 제출 (안정화 후)
182+
183+
#### 3.4.1 제출 전 체크리스트
184+
185+
- [ ] 커뮤니티 마켓플레이스에서 최소 2주 운영
186+
- [ ] 사용자 피드백 반영 (최소 1 iteration)
187+
- [ ] 버그 리포트 0건 (또는 모두 해결)
188+
- [ ] 테스트 커버리지 80%+
189+
- [ ] CI 전 플랫폼 통과 (Python 3.7~3.12 × 3 OS)
190+
- [ ] SECURITY.md, CONTRIBUTING.md, LICENSE 완비
191+
- [ ] README에 GIF 데모 + 명확한 설치/사용 가이드
192+
193+
#### 3.4.2 제출
194+
195+
- https://claude.ai/settings/plugins/submit
196+
- 또는 https://platform.claude.com/plugins/submit
197+
198+
#### 3.4.3 거절 시 대응
199+
200+
- 피드백 기반 수정 후 재제출
201+
- 커뮤니티 마켓플레이스 + PyPI는 계속 유지 (독립적)
202+
203+
---
204+
205+
## 4. 기술 결정
206+
207+
### 4.1 플러그인 vs pip 관계
208+
209+
```
210+
사용자 선택:
211+
212+
경로 A (Claude Code 네이티브):
213+
/plugin install working-diary
214+
→ hooks.json이 Stop Hook 자동 등록
215+
→ pip install claude-diary 안내
216+
→ claude-diary init 실행
217+
218+
경로 B (Python 개발자):
219+
pip install claude-diary
220+
→ claude-diary init
221+
→ settings.json에 Stop Hook 수동 등록
222+
223+
경로 C (수동):
224+
git clone + ./install.sh (기존 v1.0 방식)
225+
```
226+
227+
두 경로 모두 결과는 동일: Stop Hook이 등록되고, 세션 종료마다 일지 자동 생성.
228+
229+
### 4.2 버전 동기화
230+
231+
- plugin.json의 version과 pyproject.toml의 version을 동기화
232+
- Git tag가 single source of truth: `v4.1.0` → 둘 다 `4.1.0`
233+
234+
### 4.3 토큰 사용 제로 원칙
235+
236+
- 플러그인 설치/사용에 API 토큰 불필요
237+
- PyPI 배포는 maintainer만 토큰 필요 (GitHub Actions secret)
238+
- 사용자는 토큰 없이 100% 기능 사용 가능
239+
- Exporter 토큰은 사용자가 직접 설정하는 **선택적** 기능
240+
241+
---
242+
243+
## 5. 완료 기준
244+
245+
### Sprint D-1 (커뮤니티 마켓플레이스)
246+
- [ ] `.claude-plugin/plugin.json` 작성
247+
- [ ] `.claude-plugin/hooks.json` 작성
248+
- [ ] `/plugin marketplace add` 테스트
249+
- [ ] `/plugin install working-diary` 테스트
250+
251+
### Sprint D-2 (PyPI)
252+
- [ ] TestPyPI 배포 성공
253+
- [ ] `pip install claude-diary` 동작 확인
254+
- [ ] `claude-diary --version``4.1.0`
255+
- [ ] GitHub Actions release workflow 동작
256+
257+
### Sprint D-3 (GitHub 최적화)
258+
- [ ] Topics, About, Badges 설정
259+
- [ ] GIF 데모 추가
260+
- [ ] 최소 1개 채널에 소개 포스트
261+
262+
### Sprint D-4 (공식 마켓플레이스)
263+
- [ ] 제출 완료
264+
- [ ] 승인 또는 피드백 수신
265+
266+
---
267+
268+
## 6. YAGNI Review
269+
270+
| 항목 | 판정 | 비고 |
271+
|------|------|------|
272+
| 커뮤니티 마켓플레이스 | KEEP | 즉시 배포 가능, 리스크 제로 |
273+
| PyPI | KEEP | Python 개발자 표준 채널 |
274+
| GitHub 최적화 | KEEP | 비용 제로, 효과 높음 |
275+
| GIF 데모 | KEEP | README의 핵심 (백문이불여일견) |
276+
| 공식 마켓플레이스 | KEEP (후순위) | 안정화 후 제출 |
277+
| 블로그/SNS 홍보 | DEFER | 도구 안정화 후 선택적 |
278+
279+
---
280+
281+
## 7. Brainstorming Log
282+
283+
### 결정 1: 커뮤니티 먼저, 공식은 나중에
284+
- **근거**: 공식 마켓플레이스 리뷰 기준이 불투명. 먼저 거절되면 인상 나쁨. 커뮤니티에서 검증 후 제출이 현실적
285+
286+
### 결정 2: pip과 플러그인 이중 배포
287+
- **근거**: Claude Code 사용자는 플러그인, 일반 개발자는 pip. 타겟이 다름. 코드는 동일하고 매니페스트만 추가
288+
289+
### 결정 3: 토큰 제로 원칙 유지
290+
- **근거**: 이 도구의 핵심 가치는 "무료, 로컬, 자동". 배포 과정에서도 이 원칙을 깨면 안 됨

0 commit comments

Comments
 (0)