| name | wiki-upload |
| description | swk-wiki(회사 장기기억)의 10_Raw 에 사람이 손에 든 자료를 투입(업로드)하는 가이드 스킬. 리서치·조사·외부 기사·회의 메모·데이터 덤프 등을 받아, 메타(제목·출처·시점·민감도·맥락)를 에이전트가 대화·파일·git 맥락에서 **최대한 추론**해 10_Raw/ingest 에 날짜-slug 스냅샷으로 떨군다(append-only). 묻기는 최후 수단 — 추론값으로 먼저 만들고 근거를 보고해 사용자가 틀린 것만 고치게 한다. 투입 시 읽기 좋게 가볍게 다듬되, 한 번 들어간 Raw 는 절대 수정하지 않는다(업데이트=새 스냅샷). restricted 자료는 AI API 전송 차단. 대상 레포는 항상 ~/workspace/swk-wiki (어디서 호출하든 절대경로). Use when: "raw 에 올려줘", "위키에 올려줘/넣어줘", "이 자료 기록/저장해줘", "조사한 거 남겨줘", 손에 든 자료를 회사 기억에 남기고 싶을 때. Do NOT use for: Slack/Notion 자동 수집(collector 담당), 20_Wiki 본문 작성·구조화(gardener), Decision/가격/계약/보안 문서(PR-only). |
wiki-upload — 사람이 Raw 에 자료를 투입(업로드)
자동 수집기(Slack/Notion collector)의 사람 버전. 사람이 손에 든 자료를 규격대로 Raw 에 떨군다.
- 대상 레포:
~/workspace/swk-wiki — 어디서 호출하든 절대경로로 접근(이 스킬은 나중에 전역 ~/.claude/skills/ 로 이동해도 동작해야 하므로 cwd 비의존). 모든 git 은 git -C ~/workspace/swk-wiki ….
- 투입 위치:
10_Raw/ingest/.
제1원칙 — 투입 스냅샷은 동결 (가장 중요)
- Raw 불변 = 들어간 뒤엔 수정 금지. "원문 글자 그대로"라는 뜻이 아니다 — 회의록처럼 이미 사람/LLM 이 정리·요약한 산출물도 정당한 Raw 다. 핵심은 "무엇을 원본으로 삼았는가"라는 안정적 참조점을 동결하는 것.
- 투입 시점엔 가볍게 다듬어도 된다: 지저분한 붙여넣기 → 읽기 좋은 마크다운, 음성/사진 메모 → 텍스트, 깨진 인코딩 정리. 단 사실을 바꾸거나, 요약으로 원본을 대체하지 않는다(정보량을 줄이지 않기).
- "업데이트" = 기존 파일 수정이 아니라 새 스냅샷 파일 추가(append-only). 기존 10_Raw 파일은 절대 수정·삭제하지 않는다(CI guard.yml 이 표면화).
제2원칙 — 묻지 말고 추론하라 (질문은 최후 수단)
에이전트는 이미 맥락 대부분을 안다 — 어떤 레포인지, 오늘 날짜, git 사용자, 방금까지 무슨 작업을 했는지, 자료가 어디서 왔는지. 그 맥락으로 메타를 먼저 다 채우고, 파일을 만든 뒤 추론한 값을 함께 보고해 사용자가 틀린 것만 고치게 한다. 사후 정정 > 사전 심문. 사람을 멈춰 세우는 건 아래 "꼭 물어야 할 때"뿐이다.
입력 (3형태)
| 형태 | 처리 |
|---|
| 붙여넣은 텍스트/마크다운 | 본문에 그대로(가벼운 정리 OK) |
| 파일 경로 | 텍스트(md/txt/csv 등)는 본문. 무거운 바이너리(PDF·고해상·도면)는 wiki-minio 업로드 후 포인터만(asset_url·checksum·captured_at — 00_principles §7). 작은 표시 이미지(~1–2MB↓)는 10_Raw/assets/ |
| URL | 본문에 출처로 + 만료 대비 핵심 발췌(전문 복제는 저작권 보고) |
메타 — 거의 다 추론한다 (LEAN 7필드)
각 필드를 아래 방법으로 추론해 채운다. 묻지 않는다.
| 필드 | 추론 방법 |
|---|
collected_at | 오늘 날짜. |
collected_by | git -C ~/workspace/swk-wiki config user.name (이 환경 = Josh). |
| 대상 레포·위치 | 고정 (~/workspace/swk-wiki · 10_Raw/ingest/) — 절대 묻지 않음. |
title | 내용/파일명 첫 줄에서. |
type | 자료 형태에서: 회의록→meeting, 기사·논문 URL→article, 표·csv·덤프→data, 조사 글→research, 그 외→note. 모르면 비움. |
source | 입력 출처에서: 붙여넣은 대화면 대화: <주제>, 파일이면 경로·원출처, URL 이면 그 URL. |
dated | 내용 속 날짜 > 파일 mtime > URL 게시일 > 대화 맥락. 못 찾으면 collected_at 과 동일. |
note | 방금까지의 작업 맥락에서 "왜 남기나" 한 줄 자동 작성. |
sensitivity | 기본 public. 내용에 PII·계약금액·투자조건·인사정보 신호가 보일 때만 confidential↑. |
---
title:
type:
source:
dated:
sensitivity:
note:
collected_by:
collected_at:
---
- 폴더로 분류하지 않는다. 분류는
type 한 필드뿐 — 폴더 + type 로 같은 사실을 중복 인코딩하지 않는다(메타 인플레 방지).
- 추론이 빈약해도 파일은 만든다 — 완벽한 메타보다 "남겨두는 것"이 우선. 부족분은 Gardener 가 나중에 보강.
꼭 물어야 할 때 (이때만 멈춘다)
- 민감도 위험 신호 — 내용에 고객 PII·계약 금액·투자 조건·인사 정보가 보이는데 공개 보관하려 할 때(§5). 애매하면 한 번 확인. restricted 면 본문을 AI API 로 보내지 않는다 — 사람이 직접 붙이게 하거나 제목·메타만 남긴다.
- 출처가 정말 불명 — 어디서 왔는지 전혀 추론 불가하고, 그게 신뢰도에 결정적일 때.
그 외에는 추론값으로 진행하고 보고로 정정받는다. (계약 금액·PII 가 섞였는데 public 보관이면 경고 후 마스킹 또는 보류 — 추론으로 단정 금지 §5.6.)
동선
- 입력 받기(텍스트/파일/URL). 무거운 바이너리는 §7 포인터 처리.
- 메타를 추론으로 전부 채운다(위 표). "꼭 물어야 할 때"에 해당할 때만 한 번 묻는다.
- 파일 생성:
10_Raw/ingest/<collected_at>-<slug>.md (slug = title kebab). 본문 = (가볍게 정리한) 투입 내용 + 출처 링크.
- append-only 확인 — 기존 Raw 파일을 수정/삭제하지 않았는지 점검.
- 반영:
git -C ~/workspace/swk-wiki 새 브랜치 → 커밋 → push → PR.
- Raw 추가는 append-only 라 리뷰는 가볍다. 사용자가 "직접 넣어" 식으로 명시 승인하면 머지까지 실행(= "사람이 merge", CLAUDE.md §2). 무단 main 직접 push 는 금지.
- 여러 건을 모아 한 PR 로 묶어도 된다.
끝나면
- 투입 경로 + 추론한 메타 요약(title·type·sensitivity·dated·source)을 한 줄로 보고 → 사용자가 틀린 것만 정정.
- 후속 구조화가 필요하면 "gardener 로 20_Wiki 초안 만들까요?" 제안만 한다(자동 실행 금지 — 구조화는 별도 단계).