From 76ba697a64473e07a1979968085b20e6a97486d8 Mon Sep 17 00:00:00 2001 From: Jung Do Hyun Date: Sun, 19 Apr 2026 15:28:25 +0900 Subject: [PATCH 01/21] docs(issues/8): add SPEC for llm-wiki skill (Karpathy + qmd + LanceDB) (#8) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 2 scope: qmd 필수 통합 + LanceDB 선택. 단일 스킬에 8개 서브커맨드. wiki/ 노출형 디렉토리, wjtb-cmc 스킬 포팅 + 일반화, graceful degrade UX. Co-Authored-By: Claude Opus 4.7 (1M context) --- issues/8-llm-wiki/SPEC.md | 346 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 346 insertions(+) create mode 100644 issues/8-llm-wiki/SPEC.md diff --git a/issues/8-llm-wiki/SPEC.md b/issues/8-llm-wiki/SPEC.md new file mode 100644 index 0000000..780e7ac --- /dev/null +++ b/issues/8-llm-wiki/SPEC.md @@ -0,0 +1,346 @@ +# Issue #8: llm-wiki 스킬 스펙 + +> **스코프**: Karpathy LLM Wiki 패턴 + qmd 하이브리드 검색(Phase 2) + LanceDB 선택적 벡터 인덱스. +> **출발점**: `wjtb-cmc`의 `llm-wiki` 스킬 포팅 + 일반화. +> **이슈**: #8 + +## 1. 개요 + +### 1.1 목적 + +프로젝트 문서(스펙/ADR/회의록/코드 설명 등)를 `wiki/raw/`에 모으고 LLM이 컴파일하여 `wiki/`에 교차참조된 마크다운 위키를 생성·유지한다. **검색이 아닌 컴파일**이 핵심 — 한 번 이해한 지식을 계속 다듬어 복리로 축적한다. + +### 1.2 핵심 가치 + +- **복리 지식 축적**: RAG가 매번 재발견하는 반면, 위키는 한 번 정리한 지식을 계속 갱신 +- **Obsidian 호환**: `[[wiki-link]]` 형식, 그래프 뷰 가능 +- **qmd 하이브리드 검색**: BM25 + 벡터 + LLM 재순위 (설치 시 자동 활성) +- **선택적 벡터 인덱스**: LanceDB + DuckDB + Embedding Atlas (대규모 위키 대응) +- **Graceful degrade**: qmd 없어도 INDEX.md 라우팅으로 작동 +- **워크스페이스 컨벤션 정렬**: `wiki/` 노출형, 워크스페이스 CLAUDE.md의 "LLM Wiki 활용 규칙"과 일치 + +--- + +## 2. 아키텍처 + +### 2.1 스킬 배치 + +```text +plugins/documentation/skills/llm-wiki/ +├── SKILL.md # 메인 지침 (~300줄) +├── references/ +│ ├── page-templates.md # 6개 페이지 유형 템플릿 (포팅) +│ ├── ingest-workflow.md # 인제스트 5단계 상세 가이드 (포팅) +│ ├── claude-md-block.md # CLAUDE.md 추가 블록 템플릿 (포팅 + wiki/ 반영) +│ ├── qmd-integration.md # qmd 설치·컨텍스트·검색 옵션 (신규) +│ ├── lancedb-integration.md # LanceDB + Embedding Atlas 연결 (신규) +│ └── karpathy-pattern.md # 원본 패턴 + 본 구현 결정 기록 (신규) +└── scripts/ + ├── init.sh # wiki/ 구조 초기화 (포팅) + ├── sync_index.py # wiki/index.md 자동 재빌드 (포팅) + ├── lint_wiki.py # 끊어진 링크·고아·frontmatter 검증 (포팅) + ├── qmd_index.sh # qmd 인덱스 빌드/갱신 래퍼 (신규) + └── lancedb_sync.py # LanceDB 벡터 인덱스 동기화 (신규) +``` + +### 2.2 카테고리 및 등록 + +- `plugins/documentation/` (기존) +- `.claude-plugin/marketplace.json` documentation.skills 배열에 추가 +- `plugin.json` 그대로 유지 (버전 bump은 릴리스 시) + +### 2.3 디렉토리 컨벤션 (프로젝트 쪽) + +사용자 프로젝트 루트에 생성되는 구조: + +```text +{user-project}/ +├── wiki/ # 노출형 (워크스페이스 CLAUDE.md 규칙) +│ ├── index.md # 자동 재빌드 (sync_index.py) +│ ├── log.md # ingest 이력 +│ ├── raw/ # 원본 소스 드롭존 (불변) +│ │ └── YYYY-MM-DD_{source}.md +│ ├── {page}.md # 컴파일된 위키 페이지 (LLM 관리) +│ └── .gitignore # raw/private/** 등 +├── CLAUDE.md # "LLM Wiki 활용 규칙" 블록 추가 +└── ... +``` + +--- + +## 3. 명령어 세트 (8개) + +| 명령 | 역할 | 구현 위치 | qmd 필요? | +|------|------|----------|-----------| +| `init` | `wiki/` 구조 + `wiki/index.md` + `CLAUDE.md` 블록 생성 | `scripts/init.sh` | 아니오 | +| `ingest ` | `raw/`에 드롭된 소스를 LLM이 컴파일, 10-15 페이지 갱신 | SKILL.md 워크플로 + `references/ingest-workflow.md` | 아니오 | +| `query <질문>` | qmd 있음 → 하이브리드 검색 → LLM 합성 / qmd 없음 → INDEX.md 2-hop 라우팅 | SKILL.md 워크플로 | **선택(graceful)** | +| `lint` | 끊어진 `[[link]]`, 고아 페이지, frontmatter 불완전 탐지 | `scripts/lint_wiki.py` | 아니오 | +| `sync` | `wiki/index.md` 자동 재빌드 | `scripts/sync_index.py` | 아니오 | +| `export