noopz/commonplace
commonplace
어떤 폴더든 LLM이 관리하는 지식 베이스로 바꿉니다. commonplace book 전통과 [Karpathy](https://x.com/karpathy/status/1899559051789553968)가 LLM을 개인 wiki 관리에 활용하는 방식에서 영감을 받았습니다.
이 mod 소개
Obsidian vault든 일반 폴더든 모든 디렉터리에서 작동합니다. Obsidian은 필수가 아니며, [[wikilink]] Markdown을 사용한다면 좋은 브라우저일 뿐입니다.
기능
- wiki-init: commonplace를 폴더에 처음 연결 →
.wiki/를 구성하고 초기 도메인 탐색 - wiki-ingest: 논문, 기사 또는 URL 공유 → 구조화된 vault 노트 + concepts + MOC 링크
- wiki-query: 연구 질문 → wikilink가 포함된 답변과 새 연결을 다시 파일에 기록
- wiki-lint: “vault 상태가 어때?” → 읽기 전용 상태 보고서
- autoimprove: “vault 개선” → 점수로 제어되는 루프가 수정 사항을 고르고, 실행하고, 다시 점수를 매기며 반복
- wiki-compile: 원 논문에서 실제 정의를 가져와 개념 스텁 채우기
- wiki-supersede: 후속 항목으로 대체된 엔터티를 퇴역시키고 live→historical 재구성을 전파
- wiki-domain: 범위 규칙이 있는 연구 도메인 생성 또는 관리
- wiki-deep-link: 로컬 임베딩(Ollama)으로 숨은 개념 연결 찾기
- paper-analyzer: 스마트 PDF 추출과 다중 에이전트 검토를 통한 심층 논문 분석
작동 방식
스킬은 자연스러운 대화에서 자동으로 트리거됩니다. 슬래시 명령을 입력할 필요 없이 대화하면 알맞은 스킬이 활성화됩니다.
설치
git clone https://github.com/noopz/commonplace
cd commonplace
npm install
# vault를 지정합니다
npx tsx scripts/init.ts --vault /path/to/your/vault
의존성
gray-matter— YAML frontmatter 파싱glob— 파일 패턴 매칭pdfjs-dist— PDF 텍스트 추출tsx— TypeScript 실행
설치
먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.
claude plugin marketplace add noopz/commonplace claude plugin install commonplace
원문 / README
commonplace
A Claude Code plugin that turns any folder into an LLM-maintained knowledge base. Inspired by the commonplace book tradition and Karpathy's approach to using LLMs for personal wiki management.
Works on any directory — Obsidian vault, plain folder, whatever. Obsidian is not required; it's just a good browser for [[wikilink]] markdown if you use it.
What it does
- wiki-init: Point commonplace at a folder for the first time → scaffold
.wiki/, discover initial domains - wiki-ingest: Share a paper, article, or URL → structured vault note + concepts + MOC links
- wiki-query: Ask research questions → answers with wikilinks + novel connections filed back
- wiki-lint: Ask "how's the vault?" → read-only health report
- autoimprove: "improve the vault" → score-gated loop that picks fixes, executes, re-scores, repeats
- wiki-compile: Fill concept stubs with real definitions from source papers
- wiki-supersede: Retire an entity replaced by a successor, propagate the live→historical reframing
- wiki-domain: Create or manage research domains with scope rules
- wiki-deep-link: Find hidden concept connections via local embeddings (Ollama)
- paper-analyzer: Deep paper analysis with smart PDF extraction and multi-agent review
How it works
Skills auto-trigger from natural conversation. You never type slash commands — just chat and the right skill activates.
Skill interactions
┌─────────────┐
│ wiki-init │ (one-time setup)
└──────┬──────┘
│ writes .vault-path
▼
┌──────────────────────────────────────┐
│ (vault is active) │
└──────────────────────────────────────┘
│
┌──────────────────┼──────────────────────────┐
│ │ │
▼ ▼ ▼
┌────────────┐ ┌─────────────┐ ┌──────────────┐
│ wiki-domain│ │ wiki-ingest │ ◀───┐ │ wiki-query │
└────────────┘ └──────┬──────┘ │ └──────┬───────┘
(new domain │ paper? │ │ pivot Q
when ingest │ ─yes──▶ paper-analyzer │ "how does
finds none) │ (returns │ this relate
│ analysis) │ to X?")
▼ │
┌──────────────┐ │ ◀────┘
│ supersession │ (post-ingest pivot
│ declared in │ auto-fires wiki-query)
│ body? ──yes┼─▶ wiki-supersede
└──────┬───────┘
│ no
▼
┌────────────────┐
│ post-write hook│
│ (deterministic)│
└──────┬─────────┘
│ dispatches
┌───────────────┼─────────────────┐
▼ ▼ ▼
wiki-moc-updater wiki-impact-checker wiki-cross-domain-linker
│
└─ supersession candidate ──▶ wiki-supersede
Read-only path: Autonomous-write path:
┌──────────────┐ ┌──────────────┐
│ wiki-lint │ ◀── if fixes ──▶ │ autoimprove │
│ (diagnose) │ wanted │ (score loop) │
└──────────────┘ └──────┬───────┘
│ dispatches per round
┌─────────────────┼────────────────┬──────────────────┐
▼ ▼ ▼ ▼
wiki-linter wiki-pruner wiki-moc-updater wiki-deep-linker
(refuses retired (semantic
→ wiki-supersede) candidates)
│
▼
wiki-compile (inline at main-model cost)
│
▼
wiki-freshness-checker (post-loop)
Bottom-up triggers (any skill → wiki-supersede):
• wiki-query lands on retired note
• wiki-pruner asked to delete retired
• wiki-impact-checker flags candidate
• commonplace lint reports retired-but-referenced
| Skill | Triggers on | Hands off to | Receives from |
|---|---|---|---|
| wiki-init | first-time setup; missing .vault-path | (none) | (entry point) |
| wiki-domain | "set up a domain", "list domains" | (none) | wiki-ingest (no domain match) |
| wiki-ingest | "save this", arXiv ID, paper URL | paper-analyzer; wiki-supersede; wiki-domain; post-write hook | (entry point) |
| paper-analyzer | "analyze this paper"; arXiv without save intent | (returns analysis) | wiki-ingest |
| wiki-query | "how does X relate to Y"; post-ingest pivot | wiki-supersede (retired note) | wiki-ingest |
| wiki-supersede | "mark X retired"; body declares supersession; retired-but-live debt | (terminal) | wiki-ingest, wiki-query, wiki-pruner, wiki-impact-checker |
| wiki-lint | "how's the vault" — read-only | autoimprove (if fixes wanted) | (entry point) |
| autoimprove | "improve the vault", "what's the score" | wiki-linter, wiki-pruner, wiki-moc-updater, wiki-deep-linker, wiki-compile, wiki-freshness-checker | wiki-lint |
| wiki-compile | "fill the stubs" | (none) | autoimprove; wiki-lint |
| wiki-deep-link | "find hidden connections" (needs Ollama) | (none) | autoimprove (optional) |
Three-tier cost model:
- TypeScript scripts (zero LLM cost) — indexing, validation, linting
- Haiku agents (cheap) — mechanical fixes, wikilink insertion, MOC syncing
- Main model (synthesis) — paper analysis, concept definitions, query answers
Install
git clone https://github.com/noopz/commonplace
cd commonplace
npm install
# Point it at your vault
npx tsx scripts/init.ts --vault /path/to/your/vault
Dependencies
gray-matter— YAML frontmatter parsingglob— File pattern matchingpdfjs-dist— PDF text extractiontsx— TypeScript execution
