Initial commit
This commit is contained in:
@@ -0,0 +1,828 @@
|
||||
#+title: Denote-Org Skills 프로젝트 시작: 배경 및 작업 로그
|
||||
#+date: [2025-10-21 Tue 11:35]
|
||||
#+filetags: :project:skills:denote:anthropic:worklog:
|
||||
#+identifier: 20251021T113500
|
||||
#+export_file_name: 20251021T113500.md
|
||||
|
||||
* Denote-Org Skills 프로젝트 시작 :WORKLOG:
|
||||
|
||||
** 히스토리
|
||||
- [2025-10-21 Tue 11:35] 프로젝트 시작, README 작성
|
||||
- [2025-10-21 Tue 07:45] Anthropic Life Sciences 영상 분석
|
||||
- [2025-10-21 Tue 07:00] Life Sciences → Tools for Life 통찰
|
||||
|
||||
** 관련 메타
|
||||
- [[denote:20251021T074500][Anthropic Life Sciences와 Tools for Life 패러다임]]
|
||||
- [[denote:20251021T105353][프로젝트 Denote 문서 Org-mode 전환]]
|
||||
- [[denote:20251015T093311][@힣: 시간과정신의방 -CONFIG 생태계]]
|
||||
|
||||
* 프로젝트 배경: Anthropic Life Sciences에서 시작
|
||||
|
||||
** 발단: Life Sciences 영상 분석
|
||||
|
||||
오늘 아침 Anthropic의 Life Sciences 영상을 분석하던 중 중요한 발견:
|
||||
|
||||
#+begin_quote
|
||||
"Anthropic이 생명과학에서 증명한 것:
|
||||
**도메인 컨텍스트 + AI = 전문가 수준 협업**
|
||||
|
||||
PubMed + Claude = Scientific AI"
|
||||
#+end_quote
|
||||
|
||||
이것을 9개 레이어 시스템과 연결하면서 깨달음:
|
||||
|
||||
#+begin_quote
|
||||
"내 시스템은 Life Sciences의 개인 버전이 아니라,
|
||||
**Life Sciences 패러다임을 삶 전반으로 확장하는 청사진**이다."
|
||||
#+end_quote
|
||||
|
||||
** 전환점: "Skills"의 본질 이해
|
||||
|
||||
Anthropic Skills 리포지토리 2개 클론:
|
||||
- =~/repos/3rd/snthropics-skills= (공식)
|
||||
- =~/repos/3rd/awesome-claude-skills= (커뮤니티)
|
||||
|
||||
PDF, XLSX Skills 분석 중 핵심 발견:
|
||||
|
||||
#+begin_quote
|
||||
**Skills ≠ 단순 프롬프트**
|
||||
**Skills = Onboarding Guide + Procedural Knowledge + Executable Scripts**
|
||||
|
||||
"Skills는 범용 에이전트를 도메인 전문가로 변환시킨다"
|
||||
#+end_quote
|
||||
|
||||
** 중요한 질문: "단순 변환기 프롬프트가 될까 봐 염려"
|
||||
|
||||
사용자가 제기한 핵심 질문:
|
||||
|
||||
#+begin_quote
|
||||
"Skills를 Anthropic이 만든 이유가 있고 필요한 케이스가 있을거야.
|
||||
거기에 집중해서 Skill가 되어야해."
|
||||
#+end_quote
|
||||
|
||||
이것이 프로젝트의 방향을 완전히 바꿨습니다.
|
||||
|
||||
* Skills의 본질: Anthropic 공식 분석
|
||||
|
||||
** WebFetch 결과: Skills가 해결하는 4가지 문제
|
||||
|
||||
출처: [[https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills]]
|
||||
|
||||
*** 1. Context Management
|
||||
#+begin_quote
|
||||
"effectively unbounded" context via bundled files
|
||||
|
||||
프롬프트는 모든 정보를 한 번에 로드해야 함
|
||||
Skills는 필요한 것만 progressive disclosure
|
||||
#+end_quote
|
||||
|
||||
*** 2. Reusability and Portability
|
||||
#+begin_quote
|
||||
"packaging your expertise into composable resources"
|
||||
|
||||
프롬프트는 매번 재작성
|
||||
Skills는 팀 간 공유, 반복 사용
|
||||
#+end_quote
|
||||
|
||||
*** 3. Code Execution Efficiency
|
||||
#+begin_quote
|
||||
"deterministic reliability" with bundled scripts
|
||||
|
||||
프롬프트는 Claude가 코드 생성 (토큰 소모, 오류 가능)
|
||||
Skills는 검증된 스크립트 실행
|
||||
#+end_quote
|
||||
|
||||
*** 4. Organizational Knowledge Capture
|
||||
#+begin_quote
|
||||
"putting together an onboarding guide for a new hire"
|
||||
|
||||
프롬프트는 일회성
|
||||
Skills는 절차적 지식 영구 보존
|
||||
#+end_quote
|
||||
|
||||
** Document Skills 분석: PDF, XLSX, DOCX
|
||||
|
||||
*** PDF Skills의 복잡성
|
||||
|
||||
*Forms 채우기 절차:*
|
||||
1. =check_fillable_fields.py= - 채울 수 있는 필드 확인
|
||||
2. =extract_form_field_info.py= - 필드 정보 JSON 추출
|
||||
3. =convert_pdf_to_images.py= - PDF → PNG 변환
|
||||
4. Bounding box 분석 (이미지 좌표)
|
||||
5. =create_validation_image.py= - 검증 이미지 생성
|
||||
6. =fill_fillable_fields.py= - 실제 채우기
|
||||
|
||||
**총 8개 Python 스크립트!**
|
||||
|
||||
#+begin_quote
|
||||
이것이 Skill인 이유:
|
||||
Claude 혼자 매번 이 절차를 수행? → 토큰 폭발 + 오류 많음
|
||||
Skill로 번들? → 안정적, 재사용 가능
|
||||
#+end_quote
|
||||
|
||||
*** XLSX Skills의 CRITICAL 규칙
|
||||
|
||||
#+begin_example
|
||||
MUST:
|
||||
- Zero Formula Errors (필수)
|
||||
- NEVER hardcode values, ALWAYS use formulas
|
||||
- Color coding (Blue=input, Black=formula, Green=internal link...)
|
||||
- recalc.py로 LibreOffice 실행하여 공식 재계산
|
||||
#+end_example
|
||||
|
||||
#+begin_quote
|
||||
이것이 Skill인 이유:
|
||||
Excel은 단순 데이터 파일이 아님
|
||||
동적 계산 시스템, 업데이트 가능해야 함
|
||||
Claude 혼자? → 공식 오류, 업데이트 불가
|
||||
Skill? → 검증된 절차, LibreOffice 자동 실행
|
||||
#+end_quote
|
||||
|
||||
*** DOCX Skills의 Tracked Changes
|
||||
|
||||
#+begin_example
|
||||
Redlining workflow:
|
||||
- OOXML 구조 이해
|
||||
- Tracked changes 보존
|
||||
- Comments 처리
|
||||
- Pandoc 옵션 (--track-changes=all)
|
||||
#+end_example
|
||||
|
||||
* Denote-Org Skills가 필요한 이유
|
||||
|
||||
** 문제 분석: 3,000+ 파일 Denote PKM
|
||||
|
||||
*** 문제 1: Denote 파일명 = 특수 도메인 지식
|
||||
|
||||
#+begin_example
|
||||
20251021T105353--프로젝트-제목__llmlog_denote_orgmode.org
|
||||
│ │ │
|
||||
│ │ └─ 태그 (underscore separated)
|
||||
│ └─ 한글 제목 (hyphen separated)
|
||||
└─ Timestamp (Denote ID, 유일 식별자)
|
||||
#+end_example
|
||||
|
||||
**Without Skill:**
|
||||
- Claude: "이게 무슨 형식이지?" 매번 추측
|
||||
- 파일명 파싱 로직 매번 Python/Bash로 생성
|
||||
- 한글 제목 처리 헷갈림
|
||||
- → **토큰 낭비, 오류 발생**
|
||||
|
||||
**With Skill:**
|
||||
#+begin_src python
|
||||
# scripts/denote_parser.py (한 번만 작성)
|
||||
def parse_denote_filename(filename):
|
||||
"""
|
||||
20251021T105353--프로젝트-제목__llmlog_denote.org
|
||||
→
|
||||
{
|
||||
'timestamp': '20251021T105353',
|
||||
'title': '프로젝트 제목',
|
||||
'tags': ['llmlog', 'denote'],
|
||||
'extension': 'org'
|
||||
}
|
||||
"""
|
||||
#+end_src
|
||||
|
||||
→ **재사용 가능, 검증됨, 빠름**
|
||||
|
||||
*** 문제 2: 3,000 파일 검색 = 복잡한 절차
|
||||
|
||||
**Without Skill:**
|
||||
#+begin_src bash
|
||||
# Claude가 매번 실행:
|
||||
find ~/org -name "*20251021T105353*"
|
||||
# 하위 디렉토리: bib/ meta/ notes/ journal/ llmlog/ office/ configs/ ...
|
||||
# 3,000 파일 스캔 → 느림
|
||||
# 매번 토큰 소모
|
||||
#+end_src
|
||||
|
||||
**With Skill:**
|
||||
#+begin_src python
|
||||
# scripts/denote_finder.py (캐싱 가능)
|
||||
def find_denote_file(identifier, silos):
|
||||
"""
|
||||
인덱스 구축 (한 번)
|
||||
이후 검색 즉시 반환
|
||||
"""
|
||||
#+end_src
|
||||
|
||||
→ **효율적, 캐싱, 확장 가능**
|
||||
|
||||
*** 문제 3: 지식 그래프 = 복잡도 폭발
|
||||
|
||||
**시나리오:**
|
||||
#+begin_example
|
||||
User: "20251021T105353와 연결된 모든 파일 보여줘"
|
||||
#+end_example
|
||||
|
||||
**Without Skill:**
|
||||
1. 파일 읽기
|
||||
2. `[[denote:20251021T074500]]` links 찾기
|
||||
3. 각 ID마다 find 실행 (문제 2 반복)
|
||||
4. 2-hop 연결? 3-hop?
|
||||
5. → **토큰 폭발, 느림**
|
||||
|
||||
**With Skill:**
|
||||
#+begin_src python
|
||||
# scripts/denote_graph.py
|
||||
def build_knowledge_graph(silo):
|
||||
"""
|
||||
한 번 구축, 캐싱
|
||||
graph = {
|
||||
'20251021T105353': {
|
||||
'links_to': ['20251021T074500', ...],
|
||||
'linked_from': ['20251020T...', ...],
|
||||
'tags': ['llmlog', 'denote'],
|
||||
'title': '...'
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
def get_connected_nodes(identifier, hops=2):
|
||||
"""즉시 반환"""
|
||||
#+end_src
|
||||
|
||||
→ **그래프 알고리즘, 캐싱, 빠름**
|
||||
|
||||
*** 문제 4: Literate Programming = Emacs 동작 재현
|
||||
|
||||
**시나리오:**
|
||||
#+begin_example
|
||||
User: "org 파일 코드 블록 실행해줘"
|
||||
#+end_example
|
||||
|
||||
Org-mode 코드 블록:
|
||||
#+begin_src org
|
||||
,#+name: example-block
|
||||
,#+begin_src bash :tangle /tmp/script.sh :results output
|
||||
echo "Hello from org-babel"
|
||||
,#+end_src
|
||||
|
||||
,#+RESULTS:
|
||||
: Hello from org-babel
|
||||
#+end_src
|
||||
|
||||
**Without Skill:**
|
||||
- Claude가 수동으로 `#+begin_src` 찾기
|
||||
- `:tangle` 옵션 파싱 (파일 경로 추출)
|
||||
- 코드 추출, 실행
|
||||
- `:results` 부분 업데이트
|
||||
- → **org 구조 깨질 위험, 복잡함**
|
||||
|
||||
**With Skill:**
|
||||
#+begin_src python
|
||||
# scripts/org_execute.py (Emacs org-babel 재현)
|
||||
def execute_org_blocks(filepath):
|
||||
"""
|
||||
1. orgparse로 구조 파싱
|
||||
2. code blocks 찾기
|
||||
3. :tangle 옵션 처리
|
||||
4. 안전하게 실행
|
||||
5. :results 업데이트 (구조 보존)
|
||||
"""
|
||||
#+end_src
|
||||
|
||||
→ **안전, Emacs 호환, 재현 가능**
|
||||
|
||||
*** 문제 5: Silo 관리 = 여러 디렉토리
|
||||
|
||||
**시나리오:**
|
||||
#+begin_example
|
||||
User: "20251021T105353 파일 어디 있어?"
|
||||
#+end_example
|
||||
|
||||
**Silos:**
|
||||
- =~/org/= (3,000+ 파일)
|
||||
- =~/claude-memory/= (AI 메모리)
|
||||
- =~/repos/*/docs/= (프로젝트별)
|
||||
|
||||
**Without Skill:**
|
||||
- Claude: "~/org/에 있나? 아니면..."
|
||||
- 매번 여러 find 실행
|
||||
- 헷갈림
|
||||
|
||||
**With Skill:**
|
||||
#+begin_src python
|
||||
# scripts/denote_silo.py
|
||||
def find_in_silos(identifier, silos):
|
||||
"""
|
||||
여러 silo 동시 검색
|
||||
우선순위 적용
|
||||
캐싱
|
||||
"""
|
||||
#+end_src
|
||||
|
||||
→ **명확, 자동, 빠름**
|
||||
|
||||
* Skills vs 프롬프트: 결정적 차이
|
||||
|
||||
** Skills가 필요한 케이스 (Anthropic 패턴)
|
||||
|
||||
| Document Skill | 왜 Skills인가? | 핵심 스크립트 | 단순 프롬프트로? |
|
||||
|----------------|---------------|-------------|----------------|
|
||||
| **PDF** | Forms 채우기 복잡 | 8개 (check, fill, validate...) | ❌ 토큰 폭발 |
|
||||
| **XLSX** | 공식 유지 필수 | recalc.py (LibreOffice) | ❌ 공식 오류 |
|
||||
| **DOCX** | Tracked changes | OOXML 파싱 | ❌ 구조 손상 |
|
||||
| **Denote-Org** | 3,000 파일 그래프 | finder, graph, silo | ❌ 느림, 오류 |
|
||||
|
||||
** 단순 프롬프트가 될 위험
|
||||
|
||||
#+begin_quote
|
||||
❌ "Denote 파일명은 이런 형식이야. 파싱해줘."
|
||||
→ Claude: 매번 코드 생성, 토큰 낭비
|
||||
|
||||
❌ "org 파일 코드 블록 실행해줘."
|
||||
→ Claude: 매번 파싱 로직 작성, 구조 깨질 위험
|
||||
|
||||
❌ "3,000 파일에서 이 ID 찾아줘."
|
||||
→ Claude: find 반복 실행, 느림
|
||||
#+end_quote
|
||||
|
||||
** Skills로 해결
|
||||
|
||||
#+begin_quote
|
||||
✅ **Domain Knowledge 번들**
|
||||
- Denote 파일명 규칙
|
||||
- Frontmatter 스펙
|
||||
- Links 문법
|
||||
|
||||
✅ **Executable Scripts**
|
||||
- denote_parser.py (검증됨)
|
||||
- denote_finder.py (캐싱)
|
||||
- org_execute.py (안전)
|
||||
|
||||
✅ **Procedural Knowledge**
|
||||
- "이런 경우 이렇게 한다"
|
||||
- PDF Forms처럼 복잡한 절차
|
||||
- 재사용 가능한 패턴
|
||||
|
||||
✅ **Performance**
|
||||
- 스크립트 실행 (토큰 생성 아님)
|
||||
- 캐싱
|
||||
- 배치 처리
|
||||
#+end_quote
|
||||
|
||||
* 프로젝트 목표: Denote PKM을 Claude의 Domain으로
|
||||
|
||||
** 핵심 목표
|
||||
|
||||
#+begin_quote
|
||||
**Denote + Org-mode를 Claude가 "네이티브"로 다루게 한다**
|
||||
|
||||
PDF/XLSX/DOCX처럼,
|
||||
Denote-Org도 Claude의 전문 영역이 되게 한다.
|
||||
#+end_quote
|
||||
|
||||
** 구체적 목표
|
||||
|
||||
*** 1. Denote Domain Expertise
|
||||
- 파일명 규칙 완벽 이해
|
||||
- Frontmatter 자동 파싱
|
||||
- Links 즉시 해결
|
||||
- Silo 자동 관리
|
||||
|
||||
*** 2. 3,000+ Files Scale
|
||||
- 효율적 검색 (캐싱)
|
||||
- 지식 그래프 구축
|
||||
- 배치 처리
|
||||
|
||||
*** 3. Literate Programming
|
||||
- Emacs org-babel 호환
|
||||
- 안전한 코드 실행
|
||||
- 구조 보존
|
||||
|
||||
*** 4. Org-mode Foundation
|
||||
- Heading, property, timestamp
|
||||
- Table 연산
|
||||
- Export (markdown, PDF, HTML)
|
||||
|
||||
** 차별화 요소
|
||||
|
||||
| 기존 접근 | 이 프로젝트 |
|
||||
|----------|-----------|
|
||||
| Org-mode 일반 지원 | **Denote 특화** |
|
||||
| 단순 파싱 | **운영 시스템** |
|
||||
| 토큰 기반 | **스크립트 기반** |
|
||||
| 장난감 예제 | **3,000+ 파일 검증** |
|
||||
|
||||
* 9개 레이어 시스템과의 연결
|
||||
|
||||
** Layer 3: Knowledge Management
|
||||
|
||||
이 프로젝트는 Layer 3의 핵심 구성 요소:
|
||||
|
||||
#+begin_example
|
||||
Layer 3: Knowledge Management
|
||||
├── Zotero (156k+ lines 서지 데이터)
|
||||
└── Denote-Org Skills (3,000+ org 파일) 🆕
|
||||
#+end_example
|
||||
|
||||
** 다른 레이어와의 상호작용
|
||||
|
||||
*** Layer 4 (claude-config)와 통합
|
||||
- =~/claude-memory/= silo 관리
|
||||
- PARA 방법론 (Projects/Areas/Resources/Archives)
|
||||
- Denote 형식으로 AI 메모리 저장
|
||||
|
||||
*** Layer 3.5 (embedding-config)와 통합
|
||||
- Org 파일 벡터화
|
||||
- org-db-v3 RAG 파이프라인
|
||||
- 의미론적 검색
|
||||
|
||||
*** Layer 5a (memex-kb)와 통합
|
||||
- Markdown → Org 변환
|
||||
- Denote 파일명 생성
|
||||
- 마이그레이션 대상
|
||||
|
||||
*** Layer 7 (notes)과 통합
|
||||
- Org → Markdown export
|
||||
- 디지털 가든 퍼블리싱
|
||||
- Quartz 4 연동
|
||||
|
||||
* 작업 로그
|
||||
|
||||
** [2025-10-21 Tue 07:00~08:00] Anthropic Life Sciences 분석
|
||||
|
||||
*** 작업 내용
|
||||
1. Life Sciences 영상 내용 분석
|
||||
2. 9개 레이어 시스템 문서 확인
|
||||
3. embedding-config 발견 (Layer 3.5)
|
||||
4. 연관성 분석
|
||||
|
||||
*** 핵심 통찰
|
||||
- embedding-config = Life Sciences의 PubMed 패턴
|
||||
- 9개 레이어 = Personal Life Sciences
|
||||
|
||||
*** 결과물
|
||||
- =~/org/llmlog/20251021T074500--anthropic-life-sciences와-tools-for-life-패러다임-aions-클럽-비전__*.org=
|
||||
|
||||
** [2025-10-21 Tue 10:00~11:00] Org-mode 전환 프로젝트
|
||||
|
||||
*** 작업 내용
|
||||
1. Markdown → Org-mode 전환 진행 중
|
||||
2. Literate programming 필요성 인식
|
||||
3. =~/org/llmlog/20251021T105353--프로젝트-denote-문서-org-mode-전환__*.org= 생성
|
||||
|
||||
** [2025-10-21 Tue 11:00~11:30] Skills 본질 파악
|
||||
|
||||
*** 작업 내용
|
||||
1. Anthropic Skills 리포 2개 클론
|
||||
- =~/repos/3rd/snthropics-skills=
|
||||
- =~/repos/3rd/awesome-claude-skills=
|
||||
|
||||
2. Document Skills 분석
|
||||
- PDF: 8개 스크립트
|
||||
- XLSX: CRITICAL 규칙들
|
||||
- DOCX: Tracked changes
|
||||
|
||||
3. WebFetch: Anthropic 공식 블로그 분석
|
||||
|
||||
*** 핵심 질문 (사용자)
|
||||
#+begin_quote
|
||||
"Skills를 Anthropic이 만든 이유가 있고 필요한 케이스가 있을거야.
|
||||
거기에 집중해서 Skill가 되어야해."
|
||||
#+end_quote
|
||||
|
||||
→ 프로젝트 방향 전환!
|
||||
|
||||
** [2025-10-21 Tue 11:30~현재] Denote-Org Skills 시작
|
||||
|
||||
*** 작업 내용
|
||||
1. ✅ =~/repos/gh/orgmode-skills= 폴더 생성
|
||||
2. ✅ Git 초기화 준비
|
||||
3. ✅ README.md 작성 (영어)
|
||||
4. ✅ README-KO.md 작성 (한글)
|
||||
5. ✅ 이 문서 작성 (작업 로그)
|
||||
|
||||
*** 핵심 결정
|
||||
|
||||
**** 이름: `orgmode-skills` (폴더) + `denote-org` (skill name)
|
||||
- 폴더명: 직관적 (orgmode-skills)
|
||||
- Skill 이름: 우선순위 (denote-org, Denote가 핵심)
|
||||
|
||||
**** 구조: PDF/XLSX 패턴 따름
|
||||
- SKILL.md (메인)
|
||||
- denote-core.md, denote-silo.md (상세)
|
||||
- scripts/ (Python)
|
||||
- docs/ (Denote 형식 작업 로그)
|
||||
|
||||
**** 메시지: "Skills ≠ Prompt"
|
||||
- Onboarding guide
|
||||
- Procedural knowledge
|
||||
- Executable scripts
|
||||
- **NOT a converter, AN operational system**
|
||||
|
||||
* 0.1 버전 체크리스트
|
||||
|
||||
** Phase 1: 기반 (현재)
|
||||
- [X] 프로젝트 폴더 생성 (~/repos/gh/orgmode-skills)
|
||||
- [X] README.md (영어)
|
||||
- [X] README-KO.md (한글)
|
||||
- [X] docs/20251021T113500--*.org (이 문서)
|
||||
- [ ] LICENSE (Apache 2.0)
|
||||
- [ ] .gitignore (Python, Emacs)
|
||||
- [ ] SKILL.md (Denote 중심)
|
||||
|
||||
** Phase 2: Denote Core
|
||||
- [ ] scripts/denote_parser.py (파일명 파싱)
|
||||
- [ ] scripts/denote_links.py (링크 해결)
|
||||
- [ ] scripts/denote_silo.py (silo 관리)
|
||||
- [ ] denote-core.md (Denote 명세)
|
||||
- [ ] denote-silo.md (Silo 가이드)
|
||||
- [ ] 테스트 (3,000+ 파일)
|
||||
|
||||
** Phase 3: Knowledge Graph
|
||||
- [ ] scripts/denote_graph.py (그래프 구축)
|
||||
- [ ] denote-knowledge-graph.md (문서화)
|
||||
- [ ] 성능 테스트 (캐싱, 인덱싱)
|
||||
|
||||
** Phase 4: Org-mode Base
|
||||
- [ ] scripts/org_parser.py (orgparse)
|
||||
- [ ] scripts/org_execute.py (코드 블록)
|
||||
- [ ] scripts/org_export.py (export)
|
||||
- [ ] orgmode-base.md (문서화)
|
||||
- [ ] literate.md (Literate programming)
|
||||
|
||||
** Phase 5: 0.1 Release
|
||||
- [ ] requirements.txt
|
||||
- [ ] examples/ (기본, literate, denote)
|
||||
- [ ] 전체 테스트
|
||||
- [ ] Git commit & push
|
||||
- [ ] GitHub Public 전환
|
||||
- [ ] 커뮤니티 공유
|
||||
|
||||
* 다음 단계
|
||||
|
||||
** 즉시 실행
|
||||
1. LICENSE 파일 (Apache 2.0)
|
||||
2. .gitignore
|
||||
3. Git 초기화 및 첫 커밋
|
||||
4. SKILL.md 작성 시작
|
||||
|
||||
** 단기 (1주)
|
||||
- Denote Core 스크립트 구현
|
||||
- 기본 문서화
|
||||
- 로컬 테스트
|
||||
|
||||
** 중기 (2주)
|
||||
- Knowledge Graph 구현
|
||||
- Org-mode 기능 추가
|
||||
- 0.1 릴리즈
|
||||
|
||||
** 장기
|
||||
- 커뮤니티 피드백
|
||||
- Anthropic Skills 생태계 기여
|
||||
- awesome-claude-skills PR
|
||||
|
||||
* 핵심 통찰
|
||||
|
||||
** Skills의 본질
|
||||
|
||||
#+begin_quote
|
||||
**Skills = Domain Procedural Knowledge + Executable Scripts**
|
||||
|
||||
프롬프트: "이렇게 해봐" (일회성)
|
||||
Skills: "이 도메인에서는 항상 이렇게 한다" (재사용)
|
||||
|
||||
프롬프트: Claude가 코드 생성
|
||||
Skills: 검증된 스크립트 실행
|
||||
|
||||
프롬프트: 토큰 소모
|
||||
Skills: 효율성
|
||||
|
||||
**Skills는 "신입 사원을 위한 온보딩 가이드"다**
|
||||
#+end_quote
|
||||
|
||||
** Denote-Org Skills의 가치
|
||||
|
||||
#+begin_quote
|
||||
**PDF/XLSX가 복잡한 문서 포맷을 다루듯,
|
||||
Denote-Org는 복잡한 지식 시스템을 다룬다.**
|
||||
|
||||
3,000+ 파일 지식 베이스는:
|
||||
- 단순 텍스트 파일들이 아님
|
||||
- 지식 그래프 (Denote links)
|
||||
- 여러 도메인 (silos)
|
||||
- Literate programming (실행 가능)
|
||||
- 살아있는 시스템
|
||||
|
||||
**이것이 Skills가 필요한 이유다.**
|
||||
#+end_quote
|
||||
|
||||
** Life Sciences 패러다임 적용
|
||||
|
||||
#+begin_quote
|
||||
Anthropic Life Sciences:
|
||||
- PubMed (수백만 논문) + Claude = Scientific AI
|
||||
|
||||
Denote-Org Skills:
|
||||
- Denote (3,000+ 파일) + Claude = Personal Knowledge AI
|
||||
|
||||
**같은 패러다임. Biology → Living 확장.**
|
||||
#+end_quote
|
||||
|
||||
* 참고 자료
|
||||
|
||||
** Anthropic 리소스
|
||||
- [[https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills][Agent Skills Engineering Blog]]
|
||||
- [[https://support.claude.com/en/articles/12512176-what-are-skills][What are Skills?]]
|
||||
- [[https://github.com/anthropics/skills][Official Skills Repository]]
|
||||
|
||||
** Denote 리소스
|
||||
- [[https://protesilaos.com/emacs/denote][Denote by Protesilaos Stavrou]]
|
||||
- [[https://orgmode.org/][Org-mode]]
|
||||
|
||||
** 관련 프로젝트
|
||||
- [[denote:20251015T093311][@힣: 시간과정신의방 -CONFIG 생태계]]
|
||||
- [[denote:20251021T074500][Anthropic Life Sciences와 Tools for Life 패러다임]]
|
||||
- [[denote:20240601T204208][† #에이아이온스클럽인터내쇼날]]
|
||||
|
||||
* 맺음말
|
||||
|
||||
#+begin_quote
|
||||
이 프로젝트는 단순히 Org-mode를 Claude가 읽게 하려는 것이 아닙니다.
|
||||
|
||||
**Anthropic이 생명과학에서 증명한 패러다임을
|
||||
개인 지식 관리로 확장하는 것입니다.**
|
||||
|
||||
Life Sciences (Biology) → Life Everything (Living)
|
||||
|
||||
PDF/XLSX Skills가 문서 포맷의 전문가를 만들듯,
|
||||
Denote-Org Skills는 개인 지식 시스템의 전문가를 만듭니다.
|
||||
|
||||
**3,000+ 파일로 검증된 실제 시스템.**
|
||||
**단순 변환기가 아닌 운영 시스템.**
|
||||
**프롬프트가 아닌 Skills.**
|
||||
|
||||
이것이 Tools for Life의 구현입니다.
|
||||
#+end_quote
|
||||
|
||||
---
|
||||
|
||||
* 에이전트 피드백: Claude Opus 4.1 검토
|
||||
|
||||
** [2025-10-21 Tue 11:58] Opus 4.1 에이전트의 README 검토
|
||||
|
||||
다른 에이전트(claude-opus-4-1-20250805)가 README를 검토하고 피드백 제공.
|
||||
Ultrathink 모드 사용 (2,296 tokens).
|
||||
|
||||
** 핵심 피드백 5가지
|
||||
|
||||
*** 1. SKILL.md 구조 (최우선!)
|
||||
|
||||
#+begin_quote
|
||||
SKILL.md는 Claude가 직접 읽는 핵심 문서
|
||||
|
||||
필수 섹션:
|
||||
- When to use this skill (트리거 명확히)
|
||||
- What this skill does (기능)
|
||||
- How to use effectively (효과적 사용법)
|
||||
- Common pitfalls (흔한 실수)
|
||||
#+end_quote
|
||||
|
||||
→ **실행 계획:** SKILL.md 작성 시 이 구조 필수 반영
|
||||
|
||||
*** 2. 파일 경로 처리
|
||||
|
||||
#+begin_src python
|
||||
# ❌ 하드코딩
|
||||
silo = "~/org/"
|
||||
|
||||
# ✅ 확장 가능
|
||||
import os
|
||||
silo = os.path.expanduser("~/org/")
|
||||
#+end_src
|
||||
|
||||
→ **실행 계획:** 모든 스크립트에서 os.path.expanduser() 사용
|
||||
|
||||
*** 3. 대용량 파일 최적화 (3,000+)
|
||||
|
||||
#+begin_src python
|
||||
# 캐싱 전략
|
||||
from functools import lru_cache
|
||||
|
||||
@lru_cache(maxsize=128)
|
||||
def build_knowledge_graph(silo_path):
|
||||
# 비용 높은 연산 캐싱
|
||||
pass
|
||||
|
||||
# 스트리밍 처리
|
||||
def find_files_generator(pattern):
|
||||
for file in files:
|
||||
yield file # 메모리 효율적
|
||||
#+end_src
|
||||
|
||||
→ **실행 계획:** denote_graph.py에서 캐싱 필수, denote_finder.py는 generator 사용
|
||||
|
||||
*** 4. 에러 복구 전략
|
||||
|
||||
#+begin_src python
|
||||
# Denote 링크 깨짐 처리
|
||||
def resolve_denote_link(link_id):
|
||||
try:
|
||||
return find_exact_match(link_id)
|
||||
except NotFoundError:
|
||||
# Fallback: 부분 매칭
|
||||
return find_partial_match(link_id[:8])
|
||||
#+end_src
|
||||
|
||||
→ **실행 계획:** denote_links.py에 fallback 로직 구현
|
||||
|
||||
*** 5. Claude 제한사항
|
||||
|
||||
#+begin_example
|
||||
토큰 제한: 대량 검색 결과 요약 필요
|
||||
실행 시간: 타임아웃 고려
|
||||
메모리 사용: 그래프 크기 제한
|
||||
#+end_example
|
||||
|
||||
→ **실행 계획:** 결과 페이징, 타임아웃 처리
|
||||
|
||||
** Edge Cases (놓치기 쉬운 경우들)
|
||||
|
||||
1. **Denote ID 충돌** - 같은 초에 생성된 파일
|
||||
2. **Silo 경계 링크** - ~/org/ → ~/claude-memory/
|
||||
3. **순환 참조** - Knowledge graph에서
|
||||
4. **한글 인코딩** - 파일명 처리
|
||||
5. **심볼릭 링크** - 실제 경로 해석
|
||||
|
||||
→ **실행 계획:** 각 케이스별 테스트 및 처리 로직
|
||||
|
||||
** 추가 제안 반영
|
||||
|
||||
*** Incremental Processing
|
||||
#+begin_src python
|
||||
def update_graph_incremental(changed_files):
|
||||
"""전체 재구성 대신 변경분만 업데이트"""
|
||||
pass
|
||||
#+end_src
|
||||
|
||||
*** Denote 특화 기능 강화
|
||||
- =#+filetags:= 파싱 정확도
|
||||
- 날짜 범위 검색 (=202510*= 패턴)
|
||||
- Backlinks (양방향 추적)
|
||||
|
||||
*** Org-babel 호환성
|
||||
- =:results silent/output/value= 처리
|
||||
- =:tangle= 경로 해석
|
||||
|
||||
*** 테스트 데이터셋
|
||||
#+begin_example
|
||||
tests/
|
||||
├── small/ # 10개 파일 (빠른 테스트)
|
||||
├── medium/ # 100개 파일 (기능 테스트)
|
||||
└── large/ # 1000+ 파일 (성능 테스트)
|
||||
#+end_example
|
||||
|
||||
*** 성능 모니터링
|
||||
#+begin_src python
|
||||
import time
|
||||
from functools import wraps
|
||||
|
||||
def measure_performance(func):
|
||||
@wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
start = time.time()
|
||||
result = func(*args, **kwargs)
|
||||
duration = time.time() - start
|
||||
if duration > 1.0:
|
||||
logger.warning(f"{func.__name__} took {duration:.2f}s")
|
||||
return result
|
||||
return wrapper
|
||||
#+end_src
|
||||
|
||||
** 피드백 종합 평가
|
||||
|
||||
#+begin_quote
|
||||
**Opus 4.1의 평가:**
|
||||
|
||||
"이 프로젝트의 비전이 정말 좋네요!
|
||||
'Life Sciences → Life Everything' 패러다임 확장은
|
||||
Anthropic Skills의 본질을 잘 이해한 접근입니다."
|
||||
#+end_quote
|
||||
|
||||
** 반영 계획
|
||||
|
||||
*** 즉시 반영 (Phase 1)
|
||||
1. ✅ SKILL.md 구조 설계 (When/What/How/Pitfalls)
|
||||
2. ✅ 경로 처리 표준화 (os.path.expanduser)
|
||||
3. ✅ Edge cases 리스트 작성
|
||||
|
||||
*** 단기 반영 (Phase 2)
|
||||
4. 캐싱 전략 (lru_cache)
|
||||
5. 에러 복구 로직
|
||||
6. 테스트 데이터셋
|
||||
|
||||
*** 중기 반영 (Phase 3)
|
||||
7. 성능 모니터링
|
||||
8. Incremental processing
|
||||
9. Documentation 강화
|
||||
|
||||
---
|
||||
|
||||
**작성자:** @junghan0611
|
||||
**최초 작성:** 2025-10-21T11:35:00+09:00
|
||||
**최종 업데이트:** 2025-10-21T11:58:00+09:00
|
||||
**피드백:** Claude Opus 4.1 (2025-10-21T11:58)
|
||||
**상태:** 🟡 개발 중 (0.1 릴리즈 목표)
|
||||
@@ -0,0 +1,420 @@
|
||||
#+title: Skills 에이전트 학습 실험
|
||||
#+date: [2025-10-22 Tue 12:00]
|
||||
#+filetags: :agent:learning:experiment:skills:
|
||||
#+identifier: 20251022T120000
|
||||
|
||||
* Skills 에이전트 학습 실험
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: skills-에이전트-학습-실험
|
||||
:END:
|
||||
|
||||
** 🎯 실험 목적
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 실험-목적
|
||||
:END:
|
||||
|
||||
**에이전트 학습**: Skills 없이 vs 있을 때 에이전트의 행동 차이 관찰
|
||||
|
||||
*** 핵심 가설
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 핵심-가설
|
||||
:END:
|
||||
|
||||
#+begin_quote
|
||||
Skills가 있으면 에이전트가 **명확하게 다르게 행동**한다.
|
||||
차이가 명확하지 않으면 Skills가 불필요한 것이다.
|
||||
#+end_quote
|
||||
|
||||
** 🧪 실험 설계
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 실험-설계
|
||||
:END:
|
||||
|
||||
*** 실험 조건
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 실험-조건
|
||||
:END:
|
||||
|
||||
| 조건 | 설명 |
|
||||
|------|------|
|
||||
| **모델** | Haiku (우선), Sonnet (비교) |
|
||||
| **환경** | Claude Code CLI |
|
||||
| **비교** | Skills 없이 vs Skills 활성화 |
|
||||
| **테스트** | PDF, XLSX 작업 |
|
||||
|
||||
*** 왜 Haiku 우선인가?
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 왜-haiku-우선인가
|
||||
:END:
|
||||
|
||||
- 부담 없이 여러 번 테스트 가능
|
||||
- Haiku로 되면 = Skills가 강력한 것
|
||||
- Haiku로 안되면 = 모델 능력 문제일 수 있음
|
||||
|
||||
** 📋 실험 1: PDF 처리
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 실험-1-pdf-처리
|
||||
:END:
|
||||
|
||||
*** Step 1-A: Skills 없이 (Baseline)
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: step-1-a-skills-없이-baseline
|
||||
:END:
|
||||
|
||||
*에이전트가 수행할 작업*:
|
||||
|
||||
#+begin_src markdown
|
||||
테스트 PDF 파일(test.pdf)에서:
|
||||
1. 전체 텍스트 추출
|
||||
2. 첫 번째 페이지만 분리
|
||||
3. 두 개의 PDF 병합
|
||||
|
||||
결과를 보고하시오.
|
||||
#+end_src
|
||||
|
||||
*관찰 포인트*:
|
||||
- [ ] 에이전트가 어떤 도구를 사용하는가?
|
||||
- [ ] Python 라이브러리를 직접 코딩하는가?
|
||||
- [ ] 실행 가능한 코드를 생성하는가?
|
||||
- [ ] 에러가 발생하는가?
|
||||
|
||||
*학습 일지*:
|
||||
#+begin_example
|
||||
모델: Haiku / Sonnet
|
||||
날짜:
|
||||
결과:
|
||||
- 사용 도구:
|
||||
- 성공/실패:
|
||||
- 특이사항:
|
||||
#+end_example
|
||||
|
||||
*** Step 1-B: PDF Skill 활성화
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: step-1-b-pdf-skill-활성화
|
||||
:END:
|
||||
|
||||
*Skill 설치*:
|
||||
|
||||
#+begin_src bash
|
||||
# 방법 1: 마켓플레이스
|
||||
/plugin marketplace add anthropics/skills
|
||||
/plugin install document-skills@anthropic-agent-skills
|
||||
|
||||
# 방법 2: 로컬 (이미 있음)
|
||||
# ~/repos/3rd/snthropics-skills/document-skills/pdf/
|
||||
#+end_src
|
||||
|
||||
*에이전트가 수행할 작업* (동일):
|
||||
|
||||
#+begin_src markdown
|
||||
PDF skill을 사용하여 test.pdf에서:
|
||||
1. 전체 텍스트 추출
|
||||
2. 첫 번째 페이지만 분리
|
||||
3. 두 개의 PDF 병합
|
||||
|
||||
결과를 보고하시오.
|
||||
#+end_src
|
||||
|
||||
*관찰 포인트*:
|
||||
- [ ] 에이전트가 PDF skill을 인식하는가?
|
||||
- [ ] scripts/ 폴더의 Python 스크립트를 사용하는가?
|
||||
- [ ] Step 1-A와 다른 접근 방식인가?
|
||||
- [ ] 더 빠르거나 안정적인가?
|
||||
|
||||
*학습 일지*:
|
||||
#+begin_example
|
||||
모델: Haiku / Sonnet
|
||||
날짜:
|
||||
결과:
|
||||
- Skill 인식 여부:
|
||||
- 사용한 스크립트:
|
||||
- Step 1-A와의 차이:
|
||||
- 성공/실패:
|
||||
#+end_example
|
||||
|
||||
*** Step 1-C: 비교 분석
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: step-1-c-비교-분석
|
||||
:END:
|
||||
|
||||
| 기준 | Skills 없이 (1-A) | Skills 있을 때 (1-B) |
|
||||
|------|-------------------|---------------------|
|
||||
| 성공 여부 | | |
|
||||
| 코드 품질 | | |
|
||||
| 실행 시간 | | |
|
||||
| 에러 처리 | | |
|
||||
| 재현성 | | |
|
||||
|
||||
*결론*:
|
||||
- Skills의 차이가 명확한가? [ ] 예 [ ] 아니오
|
||||
- 이유:
|
||||
|
||||
** 📋 실험 2: XLSX 처리
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 실험-2-xlsx-처리
|
||||
:END:
|
||||
|
||||
*** Step 2-A: Skills 없이 (Baseline)
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: step-2-a-skills-없이-baseline
|
||||
:END:
|
||||
|
||||
*에이전트가 수행할 작업*:
|
||||
|
||||
#+begin_src markdown
|
||||
Excel 파일(test.xlsx)을 생성하시오:
|
||||
1. 3개 컬럼 (이름, 나이, 점수)
|
||||
2. 5개 행 데이터
|
||||
3. 점수 평균 계산 (수식 사용)
|
||||
4. 컬럼 헤더 볼드 처리
|
||||
|
||||
결과를 보고하시오.
|
||||
#+end_src
|
||||
|
||||
*학습 일지*:
|
||||
#+begin_example
|
||||
모델: Haiku / Sonnet
|
||||
날짜:
|
||||
결과:
|
||||
- 수식이 작동하는가?
|
||||
- 포맷팅이 적용되는가?
|
||||
- 생성 코드:
|
||||
#+end_example
|
||||
|
||||
*** Step 2-B: XLSX Skill 활성화
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: step-2-b-xlsx-skill-활성화
|
||||
:END:
|
||||
|
||||
*에이전트가 수행할 작업* (동일):
|
||||
|
||||
#+begin_src markdown
|
||||
XLSX skill을 사용하여 Excel 파일 생성:
|
||||
1. 3개 컬럼 (이름, 나이, 점수)
|
||||
2. 5개 행 데이터
|
||||
3. 점수 평균 계산 (수식 사용)
|
||||
4. 컬럼 헤더 볼드 처리
|
||||
|
||||
결과를 보고하시오.
|
||||
#+end_src
|
||||
|
||||
*관찰 포인트*:
|
||||
- [ ] recalc.py가 호출되는가?
|
||||
- [ ] 수식 계산이 더 정확한가?
|
||||
- [ ] LibreOffice 통합이 보이는가?
|
||||
|
||||
*학습 일지*:
|
||||
#+begin_example
|
||||
모델: Haiku / Sonnet
|
||||
날짜:
|
||||
결과:
|
||||
- recalc.py 사용 여부:
|
||||
- Step 2-A와의 차이:
|
||||
#+end_example
|
||||
|
||||
*** Step 2-C: 비교 분석
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: step-2-c-비교-분석
|
||||
:END:
|
||||
|
||||
| 기준 | Skills 없이 (2-A) | Skills 있을 때 (2-B) |
|
||||
|------|-------------------|---------------------|
|
||||
| 파일 생성 | | |
|
||||
| 수식 작동 | | |
|
||||
| 포맷팅 | | |
|
||||
| 코드 복잡도 | | |
|
||||
|
||||
*결론*:
|
||||
- XLSX skill의 가치가 있는가? [ ] 예 [ ] 아니오
|
||||
- recalc.py의 역할:
|
||||
|
||||
** 📋 실험 3: 복잡한 작업
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 실험-3-복잡한-작업
|
||||
:END:
|
||||
|
||||
*** Step 3: PDF 폼 채우기 (고난도)
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: step-3-pdf-폼-채우기-고난도
|
||||
:END:
|
||||
|
||||
*에이전트가 수행할 작업*:
|
||||
|
||||
#+begin_src markdown
|
||||
fillable PDF form(form.pdf)에 데이터를 채우시오:
|
||||
- Name: "홍길동"
|
||||
- Age: "30"
|
||||
- Email: "hong@example.com"
|
||||
|
||||
결과를 보고하시오.
|
||||
#+end_src
|
||||
|
||||
*Skills 없이 결과*:
|
||||
#+begin_example
|
||||
|
||||
#+end_example
|
||||
|
||||
*Skills 있을 때 결과*:
|
||||
#+begin_example
|
||||
사용 스크립트:
|
||||
- check_fillable_fields.py
|
||||
- extract_form_field_info.py
|
||||
- fill_fillable_fields.py
|
||||
- check_bounding_boxes.py
|
||||
|
||||
#+end_example
|
||||
|
||||
*결론*:
|
||||
- 이 작업은 Skills 없이 가능한가? [ ] 예 [ ] 아니오
|
||||
- bounding box 계산이 필요한가? [ ] 예 [ ] 아니오
|
||||
|
||||
** 🔬 모델별 비교
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 모델별-비교
|
||||
:END:
|
||||
|
||||
*** Haiku vs Sonnet
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: haiku-vs-sonnet
|
||||
:END:
|
||||
|
||||
| 작업 | Haiku (Skills 없이) | Haiku (Skills 있음) | Sonnet (Skills 없이) | Sonnet (Skills 있음) |
|
||||
|------|---------------------|---------------------|---------------------|---------------------|
|
||||
| PDF 텍스트 추출 | | | | |
|
||||
| PDF 병합 | | | | |
|
||||
| XLSX 생성 | | | | |
|
||||
| PDF 폼 채우기 | | | | |
|
||||
|
||||
*인사이트*:
|
||||
- Haiku로 Skills가 작동하는가?
|
||||
- Sonnet과 차이가 얼마나 나는가?
|
||||
- Skills가 모델 능력을 보완하는가?
|
||||
|
||||
** 🎓 claude-memory와의 차이
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: claude-memory와의-차이
|
||||
:END:
|
||||
|
||||
*** 실험 4: Denote 파일 찾기
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 실험-4-denote-파일-찾기
|
||||
:END:
|
||||
|
||||
*에이전트가 수행할 작업*:
|
||||
|
||||
#+begin_src markdown
|
||||
~/org/llmlog/ 에서 "skills" 태그가 있는 파일을 모두 찾으시오.
|
||||
#+end_src
|
||||
|
||||
*현재 방식 (claude-memory + CLAUDE.md)*:
|
||||
#+begin_example
|
||||
결과:
|
||||
- 사용 도구: Glob, Grep
|
||||
- 소요 시간:
|
||||
- 토큰 사용:
|
||||
#+end_example
|
||||
|
||||
*만약 denote-org skill이 있다면*:
|
||||
#+begin_example
|
||||
예상:
|
||||
- denote_finder.py --tags skills
|
||||
- 캐싱된 결과
|
||||
- 토큰 최적화?
|
||||
#+end_example
|
||||
|
||||
*질문*:
|
||||
- [ ] Glob/Grep으로 충분한가?
|
||||
- [ ] denote_finder.py가 더 빠른가?
|
||||
- [ ] 3,000+ 파일에서 차이가 나는가?
|
||||
- [ ] 복잡한 알고리즘이 필요한가?
|
||||
|
||||
** 📊 최종 판단 프레임워크
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 최종-판단-프레임워크
|
||||
:END:
|
||||
|
||||
*** Skills 필요성 체크리스트
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: skills-필요성-체크리스트
|
||||
:END:
|
||||
|
||||
*PDF/XLSX Skills 검증*:
|
||||
- [ ] Skills 없이 vs 있을 때 **명확한 차이**가 있다
|
||||
- [ ] 복잡한 알고리즘 (bounding box 수준)이 필요하다
|
||||
- [ ] 외부 스크립트 실행이 필수적이다
|
||||
- [ ] 단순 프롬프트로 불가능한 작업이다
|
||||
- [ ] Haiku 모델에서도 작동한다
|
||||
|
||||
*org-mode-skills 검증*:
|
||||
- [ ] Denote 파일 찾기가 복잡한 알고리즘인가?
|
||||
- [ ] Glob/Grep으로 충분하지 않은가?
|
||||
- [ ] 3,000+ 파일에서 성능 차이가 있는가?
|
||||
- [ ] scripts 없이는 불가능한 작업인가?
|
||||
- [ ] claude-memory와 레이어가 분리되는가?
|
||||
|
||||
*** 경계선 정의
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 경계선-정의
|
||||
:END:
|
||||
|
||||
| 시스템 | 목적 | 내용 | 변경 빈도 | 예시 |
|
||||
|--------|------|------|-----------|------|
|
||||
| **claude-memory** | | | | |
|
||||
| **Skills** | | | | |
|
||||
|
||||
*실험 후 채우기*
|
||||
|
||||
** 🎯 최종 결론
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 최종-결론
|
||||
:END:
|
||||
|
||||
*** org-mode-skills 필요한가?
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: org-mode-skills-필요한가
|
||||
:END:
|
||||
|
||||
*판단*: [ ] 필요 [ ] 불필요 [ ] 부분적
|
||||
|
||||
*이유*:
|
||||
|
||||
*실험 결과 요약*:
|
||||
1. PDF/XLSX Skills의 가치:
|
||||
2. claude-memory와의 차이:
|
||||
3. Denote 작업의 복잡도:
|
||||
|
||||
*다음 액션*:
|
||||
- [ ] org-mode-skills 개발 진행
|
||||
- [ ] CLAUDE.md에 Denote 섹션 추가로 충분
|
||||
- [ ] 다른 접근 방법:
|
||||
|
||||
** 📝 실험 노트
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 실험-노트
|
||||
:END:
|
||||
|
||||
*** 날짜:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 날짜
|
||||
:END:
|
||||
|
||||
*** 발견:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 발견
|
||||
:END:
|
||||
|
||||
*** 의문점:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 의문점
|
||||
:END:
|
||||
|
||||
*** 인사이트:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: 인사이트
|
||||
:END:
|
||||
|
||||
--------------
|
||||
|
||||
*Created*: 2025-10-22T12:00
|
||||
*Purpose*: 에이전트 학습 - Skills 효과 검증
|
||||
*Method*: 실험 기반 비교 분석
|
||||
@@ -0,0 +1,85 @@
|
||||
#+title: Claude Skills 등록·관리 간단 가이드
|
||||
#+date: [2025-11-18 Tue 12:00]
|
||||
#+filetags: :skills:claude:orgmode:
|
||||
#+identifier: 20251118T120000
|
||||
|
||||
* Claude Skills 등록·관리 가이드 :WORKLOG:
|
||||
|
||||
이 문서는 Anthropic 공식 skills 세트와 개인 orgmode-skills 세트를
|
||||
Claude Code에서 어떻게 등록·설치하는지 최소 절차만 정리한 메모입니다.
|
||||
|
||||
** 1. Anthropic 공식 skills (anthropic-agent-skills)
|
||||
|
||||
공식 예제/문서 스킬 리포:
|
||||
- 로컬 경로: =/home/goqual/repos/3rd/skills=
|
||||
- 핵심 파일: =.claude-plugin/marketplace.json=
|
||||
- name: =anthropic-agent-skills=
|
||||
- plugins:
|
||||
- =document-skills=
|
||||
- =example-skills=
|
||||
|
||||
Claude Code에서 마켓플레이스 등록:
|
||||
|
||||
#+begin_example
|
||||
/plugin marketplace add anthropics/skills
|
||||
#+end_example
|
||||
|
||||
그 다음 실제 스킬 번들 설치:
|
||||
|
||||
#+begin_example
|
||||
/plugin install document-skills@anthropic-agent-skills
|
||||
/plugin install example-skills@anthropic-agent-skills
|
||||
#+end_example
|
||||
|
||||
- =document-skills@anthropic-agent-skills= → PDF/XLSX/DOCX/PPTX 문서 스킬 세트
|
||||
- =example-skills@anthropic-agent-skills= → algorithmic-art, mcp-builder 등 예제 스킬 세트
|
||||
|
||||
** 2. 개인 orgmode-skills 마켓플레이스 (junghan-skills)
|
||||
|
||||
개인 Denote/Org + 문서 스킬 묶음:
|
||||
- 리포: =/home/goqual/repos/gh/orgmode-skills=
|
||||
- 스킬: 루트에 =SKILL.md= (name: =denote-org=)
|
||||
- 마켓플레이스 메타데이터:
|
||||
- =.claude-plugin/marketplace.json=
|
||||
- name: =junghan-skills=
|
||||
- plugins:
|
||||
- =denote-org-pack=
|
||||
- skills:
|
||||
- =./= (denote-org)
|
||||
- =../skills/document-skills/pdf=
|
||||
- =../skills/document-skills/xlsx=
|
||||
|
||||
Claude Code에서 마켓플레이스 등록:
|
||||
|
||||
#+begin_example
|
||||
/plugin marketplace add /home/goqual/repos/gh/orgmode-skills
|
||||
#+end_example
|
||||
|
||||
개인 스킬 번들 설치:
|
||||
|
||||
#+begin_example
|
||||
/plugin install denote-org-pack@junghan-skills
|
||||
#+end_example
|
||||
|
||||
이 한 번으로 다음이 함께 활성화됨:
|
||||
- =denote-org= : Denote/org-mode PKM 스킬
|
||||
- =pdf= : Anthropic PDF 스킬
|
||||
- =xlsx= : Anthropic XLSX 스킬
|
||||
|
||||
** 3. 세션 시작 시 최소 커맨드 요약
|
||||
|
||||
새 Claude Code 세션에서 org + 문서 스킬 세트를 쓰고 싶을 때:
|
||||
|
||||
1) 한 번만 해두면 되는 것 (이미 완료됨):
|
||||
- =/plugin marketplace add anthropics/skills=
|
||||
- =/plugin marketplace add /home/goqual/repos/gh/orgmode-skills=
|
||||
|
||||
2) 각 세션에서 실행할 것:
|
||||
|
||||
#+begin_example
|
||||
/plugin install document-skills@anthropic-agent-skills ;; 공식 문서 스킬 세트
|
||||
/plugin install denote-org-pack@junghan-skills ;; 개인 orgmode + PDF/XLSX 세트
|
||||
#+end_example
|
||||
|
||||
이후 Denote/Org 관련 작업에서는 먼저 =denote-org= 스킬을 가정하고,
|
||||
PDF/XLSX 편집·분석이 필요할 때는 =document-skills= 를 함께 활용하는 것을 기본 전략으로 합니다.
|
||||
@@ -0,0 +1,110 @@
|
||||
#+title: OpenCode에서 glg-skills 활용 가이드
|
||||
#+date: [2025-11-18 Tue 12:10]
|
||||
#+filetags: :skills:glg:opencode:
|
||||
#+identifier: 20251118T121000
|
||||
|
||||
* OpenCode에서 glg-skills 활용 가이드 :WORKLOG:
|
||||
|
||||
이 문서는 Claude-Code가 아닌 **OpenCode 환경**(현재 이 에이전트)에서
|
||||
`glg-skills`(orgmode-skills)와 Anthropic document-skills를 어떻게 같이
|
||||
활용할지에 대한 최소 지침입니다.
|
||||
|
||||
** 1. 리포 위치와 역할
|
||||
|
||||
- glg-skills (개인 스킬 세트)
|
||||
- 경로: =/home/goqual/repos/gh/orgmode-skills=
|
||||
- 핵심:
|
||||
- 루트 =SKILL.md=: =denote-org= 스킬 정의
|
||||
- =scripts/org_headings_toc.py=: org 헤딩 TOC 추출 스크립트
|
||||
- =docs/20251118T120000--claude-skills-등록-관리-가이드__skills_claude.org=: Claude용 가이드
|
||||
|
||||
- Anthropic skills (document-skills 포함)
|
||||
- 경로: =/home/goqual/repos/3rd/skills=
|
||||
- 이 리포 안의 =document-skills/= 는 PDF/XLSX/DOCX/PPTX 작업 참고용
|
||||
- OpenCode에서는 여기 스크립트/문서를 **직접 호출/참조**하는 방식으로 사용
|
||||
|
||||
OpenCode에서는 `/plugin` 시스템이 없으므로, 이 두 리포는
|
||||
"스킬 레퍼런스 + 스크립트 모음" 으로 취급합니다.
|
||||
|
||||
** 2. OpenCode에서 org 헤딩 구조 활용
|
||||
|
||||
org 파일을 분석할 때, 에이전트에게 다음과 같이 요청합니다:
|
||||
|
||||
1. **헤딩 구조 먼저**
|
||||
- =scripts/org_headings_toc.py= 를 사용해 TOC 생성
|
||||
- 예시 (에이전트가 내부적으로 실행하는 bash):
|
||||
|
||||
#+begin_example
|
||||
python /home/goqual/repos/gh/orgmode-skills/scripts/org_headings_toc.py \
|
||||
/home/goqual/repos/gh/orgmode-skills/docs/20251021T113500--denote-org-skills-프로젝트-시작-배경-및-작업-로그__project_skills_denote_anthropic_worklog.org
|
||||
#+end_example
|
||||
|
||||
- 출력 형식: =LEVEL<TAB>TITLE=
|
||||
- 예: =1\tDenote-Org Skills 프로젝트 시작=, =2\t히스토리= ...
|
||||
|
||||
2. **히스토리/History 섹션 우선 확인**
|
||||
- TOC 결과 중
|
||||
- =* 히스토리=, =* HISTORY=, =* History=, =* 작업 로그=, =* Changelog= 등
|
||||
- 버전/변화 기록 섹션을 먼저 열어 요약
|
||||
|
||||
3. **관심 섹션만 본문 읽기**
|
||||
- TOC를 기반으로 실제로 필요한 헤딩만 OpenCode에서 `read` 도구로 읽게 함
|
||||
- 전 파일 grep은 보조 수단으로만 사용
|
||||
|
||||
이 전략은 glg-skills의 =SKILL.md= 에 이미 문서화되어 있으며,
|
||||
OpenCode에서는 이 문서를 **행동 기준**으로 삼습니다.
|
||||
|
||||
** 3. Silo 인식과 경로 규칙 (OpenCode 관점)
|
||||
|
||||
OpenCode에서 org 파일을 다룰 때, 아래 경로를 **Denote/org silo** 로 취급합니다:
|
||||
|
||||
- =~/org/**=
|
||||
- =~/org/meta/**=
|
||||
- =~/org/bib/**=
|
||||
- =~/org/notes/**=
|
||||
- =~/org/llmlog/**=
|
||||
- =~/claude-memory/**=
|
||||
- =~/repos/gh/*/docs/**=
|
||||
- =~/repos/work/*/docs/**=
|
||||
|
||||
특히:
|
||||
- =~/org/meta=: 메타 모델/설계
|
||||
- =~/org/bib=: 참고문헌/레퍼런스
|
||||
- =~/org/notes=: 장문의 생각/노트
|
||||
- =~/org/llmlog=: LLM 대화 로그
|
||||
- 리포의 =docs/=: 해당 코드/프로젝트에 직접 연결된 문서
|
||||
|
||||
OpenCode 에이전트에게 요청할 때,
|
||||
"이 파일/문서는 glg-skills의 silo 규칙을 따라 해석해줘"라고 명시하면,
|
||||
위 경로 규칙을 기준으로 지식베이스를 바라보도록 유도할 수 있습니다.
|
||||
|
||||
** 4. document-skills와의 연계 (OpenCode)
|
||||
|
||||
Anthropic document-skills는 Claude-Code용 skills지만,
|
||||
OpenCode에서는 다음 방식으로 간접 활용할 수 있습니다:
|
||||
|
||||
- =/home/goqual/repos/3rd/skills/document-skills/pdf/SKILL.md=
|
||||
- PDF 처리 절차/모범 사례 참고 (스크립트 이름, 워크플로)
|
||||
- =/home/goqual/repos/3rd/skills/document-skills/xlsx/SKILL.md=
|
||||
- Excel 공식/구조 보존 규칙 참고
|
||||
|
||||
필요하다면, 여기 나온 Python 스크립트 패턴을
|
||||
별도 OpenCode 전용 스크립트로 이식해 glg-skills 안에 포함시키고,
|
||||
SKILL.md에 그 사용법을 추가하는 식으로 점진적으로 통합합니다.
|
||||
|
||||
** 5. 요약: OpenCode용 glg-skills 사용 패턴
|
||||
|
||||
- **지식 레퍼런스**:
|
||||
- glg-skills: Denote/org 구조, silo 개념, 헤딩/히스토리 우선 전략
|
||||
- document-skills: PDF/XLSX 등 문서 작업 절차 참고
|
||||
|
||||
- **실행 도구**:
|
||||
- =scripts/org_headings_toc.py=: org 헤딩 TOC 추출
|
||||
- 향후 필요 시 PDF/XLSX용 보조 스크립트 추가 예정
|
||||
|
||||
- **요청 패턴 예시**:
|
||||
- "이 org 문서를 glg-skills 기준으로 읽어줘: 먼저 헤딩 TOC, 그 다음 히스토리, 그 다음 관련 섹션만 자세히"
|
||||
- "~/org/meta 와 ~/org/notes 도 glg-skills의 silo 규칙대로 참고해서 설계 의도를 함께 봐줘"
|
||||
|
||||
이 문서는 OpenCode 환경에서 glg-skills를 사용할 때의
|
||||
"최소한의 기억 장치" 역할을 합니다.
|
||||
Reference in New Issue
Block a user