트렌딩 딥다이브 · 2026-07-18 · OSSInsight #31

kangarooking/cangjie-skill 딥다이브
— 책 한 권을 "AI가 실제로 호출하는" 스킬 묶음으로 증류하는 파이프라인

cangjie-skill(창힐 스킬)책·긴 영상 자막·팟캐스트 대본·강의를 입력받아, 그 안의 방법론을 잘게 쪼개고 검증한 뒤 AI 에이전트가 실제 상황에서 호출할 수 있는 스킬(skill) 묶음으로 만들어내는 "메타 스킬"이다. 기술적으로 특이한 점은 실행 코드가 사실상 한 줄도 없다는 것 — 저장소 전체가 마크다운 33개 파일, 약 1,700줄의 프롬프트와 절차 문서다. Python 파일이 하나 있지만 README의 별 그래프를 그리는 잡무 스크립트다. 그런데도 별 3,585개를 모았다. 이유는 "프롬프트를 소프트웨어처럼 엔지니어링한" 설계에 있다. 품질 게이트, 적대적 테스트, 감사 추적, 중단 후 재개 — 데이터 파이프라인 설계에서 익숙한 개념들이 전부 자연어 절차서로 구현돼 있다. 그래서 이 문서는 "책 요약 도구 사용법"이 아니라 신뢰할 수 없는 LLM 출력을 검증 가능한 산출물로 승격시키는 프로세스 설계를 읽는 데 초점을 맞춘다. AI와 무관한 분야의 개발자에게도 "요구사항을 어떻게 검증 가능하게 쪼개는가"의 교보재다. (저장소: kangarooking/cangjie-skill · Markdown 중심 · MIT · 별 3,585 · 포크 517 · 생성 2026-04-16 · 최신 커밋 2026-07-16)
목차
  1. 프로젝트 한 줄 요약
  2. 왜 주목받는가 — 코드 없는 저장소가 별 3,585개를 받은 이유
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 — RIA-TV++ 7단계 파이프라인
  5. 디렉토리 구조 해부
  6. 학습 포인트 — 여기서 훔쳐올 설계
  7. 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한 줄 요약

한 문장으로 압축하면

"책 한 권을 읽고 끝내지 말고, 그 안의 방법론을 AI가 실제 상황에서 자동으로 꺼내 쓰는 도구로 만들어라" — 이걸 7단계 절차로 강제하는 프롬프트 프레임워크다.

용어
스킬 (Agent Skill)
Claude Code, Cursor 같은 AI 코딩 도구에 얹는 추가 설명서 파일이다. SKILL.md라는 마크다운 파일 하나에 "언제 이걸 쓰는지(description)"와 "쓸 때 어떻게 하는지(본문)"를 적어두면, AI가 대화 도중 상황이 맞을 때 알아서 그 파일을 읽고 따른다. 플러그인과 비슷하지만 코드가 아니라 로 되어 있다는 게 핵심이다.
용어
메타 스킬 (meta skill)
"스킬을 만드는 스킬"이다. cangjie-skill 자체는 아무 지식도 담고 있지 않다. 대신 다른 스킬들을 생산하는 공장의 작업 지시서 역할을 한다. 입력이 책이고 출력이 스킬 10~25개인 공장이다.
한눈에 보는 비유

독후감 vs. 공구함

대부분의 "AI로 책 요약하기"는 독후감을 만든다. 읽으면 "오 좋은 얘기네" 하고 덮는다. 3일 뒤엔 기억에 없다.

cangjie-skill이 만드는 건 공구함이다. 《가난한 찰리의 연감》에서 "역발상 사고"를 뽑아냈다면, 그건 문서로 남는 게 아니라 당신이 6개월 뒤 "이직할지 말지 고민된다"고 AI에게 말하는 순간 AI가 알아서 꺼내 드는 렌치가 된다.

독후감과 공구함의 차이가 이 저장소의 설계 전체를 지배한다. 공구는 "언제 이 렌치를 집어야 하는가"가 명확해야 쓸모가 있기 때문이다. 그래서 7단계 중 가장 공들인 부분이 내용 요약이 아니라 호출 조건 설계와 그 조건의 테스트다.

"창힐(倉頡)"은 한자를 만들었다는 중국 전설 속 인물이다. 텍스트를 기호 체계로 바꾼 존재라는 뜻에서 붙인 이름으로 보인다.

2왜 주목받는가

코드가 없는 저장소가 별 3,585개를 받은 이유

2-1. 2026년 상반기 "스킬 생태계" 흐름의 한복판

TrendShift와 OSSInsight의 2026년 7월 트렌딩 목록을 보면 상위권이 온통 *-skills 저장소다. anthropics/skills, mattpocock/skills, emilkowalski/skills, obra/superpowers, coreyhaines31/marketingskills… 스킬을 모아서 배포하는 저장소는 이미 포화 상태다.

cangjie-skill은 그 흐름에서 한 칸 위로 올라간 자리를 잡았다. 스킬을 모으는 게 아니라 스킬을 생산하는 공정을 판다. 저장소 README에는 이 공정으로 실제 찍어낸 결과물 23개가 링크돼 있다 — 《모택동선집》 1~5권에서 25개, 《황제내경》에서 22개, 버핏의 주주서한 1957~2023년치에서 20개. 프레임워크만 있고 결과물이 없는 프로젝트와 달리, 공정이 실제로 돌아간다는 증거를 대량으로 붙여놨다.

2-2. 경쟁 제품 대비 차별점 — "요약 도구"와 뭐가 다른가

비교 축일반 AI 요약 (NotebookLM 등)단순 "책→스킬" 변환cangjie-skill
산출물요약문 1개스킬 파일 N개스킬 N개 + 색인 + 용어집 + 테스트 + 폐기 기록
선별 기준없음 (다 요약)LLM 재량3중 검증 통과분만 (통과율 25~50%)
검증없음없음미끼 문항 포함 블라인드 테스트
저자 한계보통 생략보통 생략0단계에서 최소 3개 의무
최종 상태파일로 남음파일로 남음스킬 디렉토리에 설치까지

표에서 가장 중요한 줄은 마지막 줄이다. 대부분의 유사 프로젝트가 "파일을 생성했습니다"에서 끝나는데, 이 저장소는 "설치하지 않으면 앞의 5단계는 저장소에 굴러다니는 파일 더미일 뿐"이라고 명시하고 5단계 절차에 설치를 못 박아뒀다. 소프트웨어로 치면 빌드 산출물과 배포를 구분한 셈이다.

2-3. 진짜 매력 포인트 — 프롬프트에 품질 게이트를 박았다

LLM에게 "이 책을 스킬로 만들어줘"라고 시키면 무슨 일이 벌어지는가? LLM은 거절하지 않는다. 책에 방법론이 3개뿐이어도 20개를 만들어낸다. 그럴싸한 제목을 붙이고, 없는 근거를 지어내고, "성실하게 노력하라" 같은 뻔한 소리를 "황금 원칙"이라 포장한다.

비유

초등학생에게 "이 책에서 배운 점 20개 써와"라고 시키면 3개쯤 쓰고 나머지 17개는 지어낸다. 아이가 나빠서가 아니라, 20개를 채우라는 지시가 우선이기 때문이다.

LLM도 정확히 같다. cangjie-skill의 3중 검증은 "20개 써와"가 아니라 "각 항목마다 책의 다른 챕터 2곳에서 근거를 찾아와, 못 찾으면 버려"라고 요구하는 장치다. 지어낼 수 없는 조건을 붙여서 지어내기를 막는다.

이 발상 자체가 이 저장소의 판매 포인트다. 별을 모은 건 "책 요약" 기능이 아니라 LLM의 아부(sycophancy)와 날조를 절차로 막는 패턴이다.

2-4. 저자의 문제 제기 — "책을 위한 방법론과 에이전트를 위한 방법론은 다르다"

저장소의 methodology/00-overview.md에 "근본 통찰"이라는 절이 있다. 요지는 이렇다.

차원사람에게 보여줄 때에이전트가 쓸 때 (이 프로젝트의 목표)
핵심 필드스토리 / 명언 / 감정 훅트리거 / 실행 단계 / 중단 기준
실패 모드읽고 잊어버림트리거가 부정확 → 영영 호출 안 되거나 아무 때나 호출됨
성공 기준독자가 "얻은 게 있다"고 느낌실제 문제가 해결됨

"읽고 잊어버림"과 "트리거 부정확"은 완전히 다른 실패다. 전자는 사람의 문제고 후자는 설계의 문제다. 그래서 이 파이프라인의 무게중심은 요약이 아니라 "언제 발동하는가"를 명세하고 시험하는 쪽에 쏠려 있다. 7단계 중 4단계가 통째로 이 시험에 배정돼 있다.

2-5. 냉정한 평가 — 짚어야 할 한계

한계 1
검증하는 주체도 결국 같은 LLM이다

3중 검증(교차 근거·예측력·독창성)은 뛰어난 설계지만, 판정을 내리는 건 방금 후보를 만든 것과 같은 모델이다. 자기가 만든 걸 자기가 심사한다. 문서 스스로도 "V1 부정행위 — 같은 사례를 말만 바꿔 2곳으로 세기"를 경고하는데, 그 경고를 지키는지 확인할 외부 심판은 없다. 완화책은 4단계의 독립 서브에이전트 블라인드 테스트인데, 이건 트리거 정확도만 검사할 뿐 내용의 진위는 못 잡는다.

한계 2
비용이 만만치 않다

서브에이전트 5개 병렬 + 후보마다 3중 검증 + 스킬마다 테스트 5~10개 블라인드 실행. 20개 스킬을 뽑으면 LLM 호출이 수백 회 단위로 나간다. 저장소가 "무조건 먼저 1권만 시범 운영"을 반복 강조하는 건 품질 때문이기도 하지만 지갑 때문이기도 하다.

한계 3
저작권 회색지대

원문 인용을 단락당 150자(영문 100단어) 이하로 제한하고 기존 번역본 사용을 금지하는 등 방어선을 두긴 했다. 하지만 저작권이 살아있는 책 한 권에서 20개 스킬을 뽑아 GitHub에 공개 배포하는 행위 자체가 안전하다고 보장되진 않는다. 저장소의 예시 결과물이 《모택동선집》, 《황제내경》, 《주역》, 버핏 주주서한처럼 퍼블릭 도메인이거나 무료 공개된 자료에 몰려 있는 것은 우연이 아닐 가능성이 높다.

한계 4
"스킬이 실제로 유용했는가"는 아무도 측정하지 않는다

4단계 압력 테스트가 재는 건 "올바른 상황에서 발동하는가""발동해서 도움이 됐는가"가 아니다. 완벽한 트리거를 가진 쓸모없는 스킬은 이 파이프라인의 모든 관문을 통과한다. 결과 품질의 최종 판단은 여전히 사용자 몫이다.

그럼에도
한계를 알고도 읽을 가치

이 저장소의 학습 가치는 "책 증류"라는 용도에 있지 않다. 신뢰할 수 없는 생성물에 검증 관문·감사 추적·적대적 테스트를 씌우는 패턴 자체가 이식 가능한 자산이다. 이 골격은 코드 리뷰 자동화, 요구사항 명세 추출, 문서 마이그레이션 등 "LLM이 대량 생성하고 사람이 다 못 읽는" 모든 작업에 그대로 옮겨 붙는다.

3기술 스택 전체 지도

"스택이 없다"는 것이 곧 스택이다

이 절을 쓰면서 솔직히 말해야 할 게 있다. 이 저장소에는 통상적 의미의 기술 스택이 없다. 백엔드도 프론트엔드도 인프라도 없다. 그 사실 자체가 가장 중요한 기술적 관찰이다.

3-1. 실제 파일 구성

분류파일 수줄 수역할
메타 스킬 정의1 (SKILL.md)168전체 실행 규격 — AI가 읽는 진입점
방법론 문서8 (methodology/)590각 단계의 "왜 이렇게 하는가" + 상세 절차
추출기 프롬프트5 (extractors/)305병렬 서브에이전트 5종의 역할 정의서
산출물 템플릿5 (templates/)434결과 파일의 빈 양식
README (3개국어)3중/영/일
Python 스크립트1README용 별 히스토리 SVG 생성 — 본체와 무관

합계 약 1,700줄, 마크다운 33개 파일. GitHub이 언어를 "Python"으로 표시하는 건 저 잡무 스크립트 하나 때문이다. 실제 저장소의 99%는 자연어다.

3-2. "런타임"에 해당하는 것

그럼 이 소프트웨어는 뭐로 실행되는가? AI 에이전트 자체가 런타임이다.

일반적인 소프트웨어 cangjie-skill ───────────────── ───────────────── 소스 코드 (.py/.ts) ←→ 절차 문서 (.md) Python / Node 런타임 ←→ Claude Code / Cursor / OpenClaw 함수 호출 ←→ 서브에이전트 스폰 (Agent 도구) 병렬 스레드/프로세스 ←→ 동시 스폰된 5개 서브에이전트 파일 I/O ←→ 파일 I/O (동일 — 에이전트가 직접 씀) 단위 테스트 ←→ test-prompts.json 블라인드 시험 CI 파이프라인 ←→ 단계별 품질 게이트 (통과 못하면 재작업) 체크포인트/재시작 ←→ PIPELINE_STATE.md
용어
서브에이전트 (sub-agent)
AI가 자기 자신의 복사본을 여러 개 띄워서 각각 다른 일을 시키는 기능이다. Claude Code의 Agent 도구가 이걸 제공한다. 중요한 특징은 각 복사본이 서로의 대화 내용을 못 본다는 것 — 이 격리가 cangjie-skill의 설계 전체를 떠받친다. 5개 추출기가 서로 못 보기 때문에 "독립적으로 같은 결론에 도달했다"는 사실이 증거로서 의미를 갖는다.

3-3. 의존성 — 이식성이 곧 설계 목표

의존 대상필수 여부없으면
스킬을 읽는 AI 도구 (Claude Code 등)필수실행 불가
파일 읽기/쓰기 권한필수산출물 저장 불가
서브에이전트 병렬 실행선택직렬 실행으로 자동 강등 (문서에 명시)
긴 컨텍스트 윈도우선택5만 자 단위 청크 분할 전략 사용
영상 자막 추출 도구선택영상 소스만 못 씀, 책은 정상
인터넷 연결불필요

필수 항목이 2개뿐이다. 나머지는 전부 "없으면 이렇게 대신 하라"는 강등 경로(degradation path)가 문서에 적혀 있다. 이건 라이브러리를 설계할 때 optional dependency를 다루는 방식과 정확히 같은 사고방식이다.

배울 점
강등 경로를 프롬프트에 명시한다

프롬프트를 쓸 때 "서브에이전트 5개를 병렬로 띄워라"라고만 쓰면, 그 기능이 없는 환경의 AI는 멈추거나 조용히 무시하거나 지어낸다. cangjie-skill은 매번 "병렬을 지원하지 않는 환경이면 동일한 5개 프롬프트를 직렬로 실행하되 산출물 형식은 동일하게 유지하라"를 함께 적는다. try/except를 자연어로 쓴 것이다.

4아키텍처 심화 분석

RIA-TV++ 7단계 파이프라인의 설계 패턴

4-1. 이름 해부

글자출처의미
RIA자오저우 《이렇게 읽으면 충분하다》Reading(원문) / Interpretation(내 말로 재서술) / Appropriation(적용)
TVnuwa-skillTriple Verification — 3중 검증
++이 프로젝트가 추가E(Execution 실행 단계) + B(Boundary 경계)

저자가 참조한 지적 계보를 문서에 표로 밝혀놨다는 점이 특이하다 — 애들러의 《독서의 기술》(0단계 분석적 독서), 루만의 제텔카스텐(원자화+연결), 티아고 포르테의 점진적 요약(4단계의 검증 가능한 압축 사슬). 기존 독서법 문헌을 에이전트 실행용으로 번역한 프로젝트라는 자기 규정이다.

4-2. 전체 시스템 구조도

[입력] 책 PDF/EPUB/TXT · 영상 자막 · 팟캐스트 대본 · 강의록 │ │ ※ 텍스트 없으면 여기서 정지. "기억으로 증류 금지" (하드 룰) ▼ ┌──────────────────────────────────────────────────────────┐ │ 0단계 · 전체 이해 (애들러 분석적 독서 4스텝) │ │ ① 구조: 장르/주제 한 문장/1차 논점 3~7개 │ │ ② 해석: 저자 고유 용어 정의 / 핵심 명제 5~15개 │ │ ③ 비판: 시대적 한계 · 입장 맹점 · 미증명 전제 (최소 3개)│ │ ④ 적용가능성: 무엇이 스킬화 가능한가 │ │ ───────────────────────────────────────────────────── │ │ 산출: BOOK_OVERVIEW.md ★ ③이 나중에 B(경계)의 원료 │ └──────────────────────────┬───────────────────────────────┘ │ ▲ 사용자 확인 관문 #1 ▼ "골격 제대로 잡았나요?" ┌──────────────────────────────────────────────────────────┐ │ 1단계 · 5개 서브에이전트 병렬 추출 (서로 격리됨!) │ │ │ │ ┌─────────┐┌─────────┐┌─────────┐┌─────────┐┌─────────┐ │ │ │ 프레임 ││ 원칙 ││ 사례 ││ 반례 ││ 용어 │ │ │ │ 워크 ││ 체크리 ││ 저자가 ││ 저자가 ││ 사전 │ │ │ │ 사고모델││ 스트 ││직접쓴것 ││경고한것 ││ │ │ │ └────┬────┘└────┬────┘└────┬────┘└────┬────┘└────┬────┘ │ │ └──────────┴──────────┴──────────┴──────────┘ │ │ 산출: candidates/*.md (필터링 금지 — 과잉수집이 원칙) │ └──────────────────────────┬───────────────────────────────┘ ▼ ┌──────────────────────────────────────────────────────────┐ │ 1.5단계 · 3중 검증 관문 ★ 이 프로젝트의 심장 │ │ │ │ V1 교차근거 : 책 안의 독립된 2곳 이상에서 뒷받침되나? │ │ V2 예측력 : 책에 없는 새 질문에 답을 낼 수 있나? │ │ V3 독창성 : 똑똑한 사람이면 다 하는 말 아닌가? │ │ │ │ [통과] → verified.md [탈락] → rejected/ (사유 기록)│ │ 통과율 25~50% 기대. <5% 또는 >80%면 경보 │ └──────────────────────────┬───────────────────────────────┘ │ ▲ 사용자 확인 관문 #2 ▼ "이 N개로 갑니다. 살릴 것/뺄 것?" ┌──────────────────────────────────────────────────────────┐ │ 2단계 · RIA++ 6단 구성 (통과한 단위마다 SKILL.md 1개) │ │ R 원문인용(≤150자) → I 내 말로 → A1 책 속 사례 │ │ → A2 발동 조건 ★ → E 1-2-3 실행단계 → B 경계 │ └──────────────────────────┬───────────────────────────────┘ ▼ ┌──────────────────────────────────────────────────────────┐ │ 3단계 · 제텔카스텐 연결 │ │ 관계 3종: 의존(depends-on)/대비(contrasts)/조합(composes)│ │ → INDEX.md(관계 그래프) + GLOSSARY.md │ │ → A2의 "인접 스킬과의 구분"을 초안에서 확정본으로 회수 │ │ ※ 스킬 10개면 관계 8~15개가 적정. 25개↑면 억지 연결 │ └──────────────────────────┬───────────────────────────────┘ ▼ ┌──────────────────────────────────────────────────────────┐ │ 4단계 · 압력 테스트 (독립 서브에이전트 블라인드) │ │ should_trigger 3~5문항 · 발동해야 할 때 발동하나 │ │ should_not_trigger 2~3문항 · 참아야 할 때 참나 (미끼) │ │ └ 최소 1문항은 "같은 책의 형제 스킬"이 답인 함정 ★ │ │ edge_case 1~3문항 · 애매한 경계 판단 │ │ │ │ 100% → 합격 · 80%↑ → 원인 분석 · 80%↓ → 2단계 재작업│ └──────────────────────────┬───────────────────────────────┘ ▼ ┌──────────────────────────────────────────────────────────┐ │ 5단계 · 인도 │ │ ① DIGEST.md 5,000~10,000자 (사람용 정수 장문) │ │ ② ~/.claude/skills/ 또는 프로젝트 .claude/skills/ 에 설치│ │ ③ darwin-skill로 넘겨 자동 진화 가능하다고 안내 │ └──────────────────────────────────────────────────────────┘ 전 구간 · PIPELINE_STATE.md 로 상태 저장 → 중단 시 이어서 재개

4-3. 핵심 설계 패턴 6가지

패턴 1

독립성이 곧 증거다 — 격리된 병렬 추출

5개 추출기를 병렬로 돌리는 이유가 속도가 아니다. 문서에 세 가지 이유가 적혀 있는데 세 번째가 핵심이다: "독립성: 각 추출기가 독립적으로 판단해야 서로 오염되지 않고, 그래야 3중 검증이 진짜로 작동한다."

만약 하나의 에이전트가 순차적으로 5가지 관점을 훑는다면, 앞에서 "역발상 사고가 중요하다"고 판단한 게 뒤의 판단에 영향을 준다. 그러면 "여러 곳에서 독립적으로 발견됨"이라는 V1 검증의 근거가 사실은 자기 자신의 메아리가 된다.

일반화: 여러 LLM 판정을 앙상블할 때, 판정자들이 서로의 출력을 보면 앙상블의 통계적 의미가 사라진다. 이건 사람 채점에서 채점자 간 신뢰도를 재는 것과 같은 원리다.

패턴 2

과잉 수집 → 엄격 선별 (2단계 분리)

1단계 추출기들에게 반복적으로 지시하는 문장: "필터링 하지 마라 — 잘못 죽이느니 다 가져와라. 1.5단계 3중 검증에 맡겨라."

수집과 선별을 같은 단계에서 하면 어느 쪽도 제대로 안 된다. 수집하며 판단하면 기준이 흔들리고, 판단하며 수집하면 놓친다. 분리하면 각 단계가 하나의 명확한 목적 함수만 갖는다.

일반화: 데이터 파이프라인의 ELT(Extract-Load-Transform)와 같은 발상이다. 일단 원본을 다 적재하고 변환은 나중에.

패턴 3

낙방한 것도 사유와 함께 보관한다 — 감사 추적

탈락한 후보는 rejected/<id>.md어느 검증에서 왜 떨어졌는지까지 적어 남긴다. 삭제하지 않는다.

이유는 두 가지다. ① 사용자가 나중에 "그거 왜 빠졌지?"를 확인하고 되살릴 수 있다. ② 탈락 사유의 분포를 보면 추출기의 품질 자체를 진단할 수 있다 — 통과율이 5% 미만이면 추출기가 엉망이고, 80%를 넘으면 검증 기준이 물렁하다는 신호로 쓰라고 명시돼 있다.

일반화: LLM 필터를 만들 때 버린 것을 로그로 남기지 않으면 필터가 너무 빡센지 너무 헐렁한지 영원히 모른다. 이건 스팸 필터 설계의 기본이기도 하다.

패턴 4

미끼 문항과 형제 혼동 테스트 — 적대적 평가

4단계의 가장 영리한 규칙: "미끼 문항 중 최소 1개는 '같은 책에서 뽑은 다른 스킬이 발동해야 하는' 상황이어야 한다."

이유가 문서에 적혀 있다. 한 권에서 스킬 10여 개를 뽑으면 배포 후 가장 흔한 실제 장애는 "완전히 무관한 상황에서 발동"이 아니라 "형제 스킬끼리 서로 호출을 뺏는 것"이기 때문이다. 무관한 상황만 테스트하면 이 장애를 절대 못 잡는다.

더 나아가 블라인드 테스트 방식도 지정한다 — 서브에이전트에게 전체 스킬 목록을 주고 "이 중 어느 것을 발동할래?"라는 객관식으로 물으라고 한다. "이거 발동할래 말래?"라는 O/X 문제로는 형제 간 경합이 드러나지 않는다.

일반화: 분류기 평가에서 이진 분류 정확도만 보면 클래스 간 혼동 행렬이 안 보이는 것과 정확히 같은 문제다. cangjie-skill은 그걸 자연어 절차로 재발명했다.

패턴 5

"고치기 vs. 테스트 고치기"의 판정 규칙

테스트가 실패했을 때 스킬을 고칠지 테스트를 고칠지 — 이건 사람이 늘 자기합리화하는 지점이다. 문서는 세 갈래 규칙을 준다.

세 번째에 붙은 "사유 기록" 조건이 핵심이다. 자기합리화를 막을 수는 없지만 기록으로 남기게 만들면 빈도가 준다. 그리고 문서는 통과율 80% 미만이면 "표면 수리 금지, 2단계 통째로 재작업"이라고 못 박아 도망갈 구멍을 좁힌다.

패턴 6

PIPELINE_STATE.md — 자연어로 쓴 체크포인트

매 단계 완료 시 PIPELINE_STATE.md에 현재 단계 / 완료된 산출물 / 각 스킬 상태 / 다음 할 일을 체크리스트로 갱신한다. 시작할 때 이 파일이 있으면 처음부터 다시 하지 말고 거기서 이어가라고 지시한다.

LLM 세션은 컨텍스트 한계나 중단으로 끊기기 쉬운데, 수 시간짜리 작업을 처음부터 다시 돌리면 비용이 그대로 두 배다. 체크포인팅을 마크다운 파일로 구현한 셈이다.

4-4. 데이터 흐름 — 하나의 방법론 단위가 겪는 여정

[원문 한 대목] "반대로 생각하라, 항상 반대로 생각하라. 내가 어디서 죽을지 안다면 나는 절대 그곳에 가지 않을 것이다." │ │ 1단계 · framework-extractor 가 포착 ▼ 후보 f01 { title: 역발상 사고 / type: framework source_chapter: 제3강 / source_quote: "..." summary: 목표를 볼 때 "어떻게 이룰까"가 아니라 "무엇이 나를 실패시킬까"부터 묻는다 tags: [decision, mental-model, inversion] } │ │ 1.5단계 · 3중 검증 ▼ V1 ✔ 투자 결정(3강) / 공학 설계(7강) / 교육법(11강) 3곳 독립 등장 V2 ✔ 새 질문 "면접에서 모르는 질문을 받으면?" → "가장 듣기 싫은 평가가 뭔지 역으로 물어 거기서 역산" V3 ✔ 상식은 "많이 생각하라", 이건 "반대부터 생각하라"는 순서 지정 → verified.md 등재 │ │ 2단계 · RIA++ 6단 전개 ▼ SKILL.md ├ R 원문 ≤150자 + 출처 표기 ├ I 원서 안 읽은 사람도 이해되게 내 말로 (5~15줄) ├ A1 저자가 실제로 쓴 사례 1~3개 ├ A2 ★ 발동 상황 3~5개 + 사용자가 쓸 말투 신호 (한/영 병기) │ + 인접 스킬과의 구분 (여기선 초안) ├ E 판정 가능한 완료 기준이 붙은 1-2-3 단계 └ B 안 쓸 때 / 저자 맹점 (← 0단계 ③ 비판에서 옴) │ │ 3단계 · 연결 + A2 확정본 회수 ▼ related_skills: [{정방향추론, contrasts-with}, ...] │ │ 4단계 · 블라인드 테스트 (미끼 포함) ▼ 통과율 100% → 합격 / 80% 미만 → 2단계로 반송 │ │ 5단계 ▼ ~/.claude/skills/inversion-thinking/ 에 설치 → 실제 호출 가능

5디렉토리 구조 해부

파일 33개가 어떻게 역할을 나누는가
cangjie-skill/ ├── SKILL.md ★ 진입점. AI가 제일 먼저 읽는 168줄 │ (frontmatter의 description이 발동 조건) ├── README.md / .en.md / .ja.md 중·영·일 3개국어 소개 ├── GITHUB_REPO.md 저장소 메타 정보 ├── LICENSE MIT │ ├── methodology/ ← "왜 이렇게 하는가" + 단계별 상세 절차 │ ├── 00-overview.md RIA-TV++ 설계 근거 + 불변조건 6개 │ ├── 01-stage0-adler.md 애들러 4스텝 + 품질 게이트 체크리스트 │ ├── 02-stage1-parallel-extract.md 병렬 추출 + 긴 텍스트 청크 전략 │ ├── 03-stage1.5-triple-verify.md V1/V2/V3 + 부정행위 패턴 3종 │ ├── 04-stage2-ria-plus.md 6단 작성법 + 흔한 실패 5종 │ ├── 05-stage3-zettelkasten.md 관계 3종 + "억지 연결 금지" 절제 원칙 │ ├── 06-stage4-pressure-test.md 블라인드 평가 원칙 + 판정 기준 │ └── 07-stage5-deliver.md DIGEST 작성 + 설치 절차 │ ├── extractors/ ← 병렬 서브에이전트 5종의 직무기술서 │ ├── framework-extractor.md 사고모델·의사결정 프레임워크 │ ├── principle-extractor.md 원칙·체크리스트·규칙·격언 │ ├── case-extractor.md 저자가 직접 사용한 실례 │ ├── counter-example-extractor.md 저자가 경고한 실패 패턴 ★ │ └── glossary-extractor.md 핵심 개념 사전 │ ├── templates/ ← 산출물 빈 양식 │ ├── BOOK_OVERVIEW.md.template 0단계 결과 (102줄) │ ├── SKILL.md.template 개별 스킬 (121줄, 가장 중요) │ ├── INDEX.md.template 스킬 지도 + mermaid 그래프 (86줄) │ ├── DIGEST.md.template 사람용 정수 장문 (73줄) │ └── test-prompts.json.template darwin 호환 테스트 (52줄) │ ├── scripts/generate_star_history.py README 배지용. 본체와 무관 └── assets/ 이미지·QR·폰트

5-1. 왜 SKILL.md와 methodology/를 분리했는가

SKILL.md는 168줄이고 methodology/ 8개 파일을 합치면 590줄이다. 내용이 겹치는데 왜 나눴을까?

비유

비행기 조종실의 체크리스트정비 매뉴얼의 차이다. 조종사는 이륙할 때마다 매뉴얼 전권을 읽지 않는다. 코팅된 카드 한 장을 본다. 매뉴얼은 "왜 이 순서인가"가 궁금하거나 이상 상황일 때 펼친다.

SKILL.md가 체크리스트, methodology/가 매뉴얼이다. AI는 항상 SKILL.md만 컨텍스트에 올리고, 특정 단계에 진입할 때만 해당 methodology/0N-*.md를 읽는다.

용어
점진적 공개 (progressive disclosure)
필요한 정보만 그때그때 꺼내 읽는 설계다. AI의 컨텍스트 윈도우(한 번에 기억할 수 있는 분량)는 유한하고 비싸다. 590줄을 항상 들고 다니면 정작 책 내용을 읽을 자리가 줄어든다. 그래서 진입점은 얇게, 상세는 별도 파일로 미룬다. Anthropic의 공식 스킬 작성 가이드도 같은 패턴을 권장한다.

5-2. 산출물 디렉토리 구조 (사용자 쪽에 생기는 것)

books/<book-slug>/ ├── PIPELINE_STATE.md 현재 단계 + 진행률 (중단 후 재개용) ├── BOOK_OVERVIEW.md 0단계: 주제/골격/용어/비판 ├── verified.md 1.5단계: 검증 통과분 + 판정 사유 ├── INDEX.md 3단계: 스킬 총람 + 관계 그래프 ├── GLOSSARY.md 3단계: 전 스킬 공용 용어집 ├── DIGEST.md 5단계: 사람용 정수 장문 5,000~10,000자 ├── candidates/ 1단계 원본 후보 풀 (감사용) │ ├── frameworks.md principles.md cases.md │ └── counter-examples.md glossary.md ├── rejected/ 1.5단계 탈락분 + 사유 (감사용) ├── <skill-slug-1>/ │ ├── SKILL.md │ ├── test-prompts.json darwin 호환 형식 │ └── test-results.md 통과율 + 실패 분석 └── <skill-slug-2>/ ...

주목할 점: GLOSSARY.md는 원래 candidates/glossary.md로 태어났다가 3단계에서 루트로 승격된다. 문서의 설명이 명확하다 — "이건 모든 스킬이 공유하는 사전이므로 감사용 디렉토리에 묻혀 있으면 안 된다." 감사 자료와 인도물의 위치를 의도적으로 구분한다.

6학습 포인트

이 저장소에서 훔쳐올 수 있는 것

6-1. 프롬프트 엔지니어링 관점

배울 것구체적 기법어디서 확인
역할 격리각 추출기 프롬프트에 "내 담당이 아닌 것" 목록을 명시하고 담당자를 지목extractors/*.md의 "不属于你的" 절
자가 점검제출 전 체크박스 4~5개를 프롬프트 끝에 배치모든 추출기의 "自检" 절
수량 기대치"5개 미만이면 놓친 것, 50개 초과면 과잉 포함"처럼 양쪽 경계를 준다framework-extractor.md 말미
좋은 예/나쁜 예 대조A2 트리거의 good/bad 예시를 나란히04-stage2-ria-plus.md
부정행위 예상"V1 부정행위: 같은 사례를 말만 바꿔 2곳으로 셈" — 회피 수법을 미리 명시03-stage1.5-triple-verify.md
가장 유용한 하나
"부정행위 패턴을 미리 적어두기"

LLM은 요구사항을 만족시키라고 하면 가장 쉬운 경로로 만족시킨다. "2곳에서 근거를 찾아라"라고 하면 같은 문단을 두 번 인용한다. 악의가 아니라 최소 저항 경로다.

cangjie-skill은 각 검증마다 예상되는 편법을 명시적으로 금지 목록에 적어둔다. "서로 다른 장 + 서로 다른 대상 + 서로 다른 결론이어야 한다"처럼 조건을 조여서 편법 경로를 막는다. 프롬프트를 쓸 때 "이 지시를 게으르게 만족시키는 방법이 뭘까"를 먼저 상상하고 그걸 차단하는 습관은 즉시 응용 가능하다.

6-2. 소프트웨어 설계 관점 (AI와 무관하게)

6-3. 기술별 실습 아이디어

배울 기술실습 아이디어
스킬 작성본인이 가장 자주 하는 반복 업무 하나를 골라 SKILL.md 한 장으로 만들고, description만 바꿔가며 발동률을 측정
서브에이전트 병렬화한 문서를 3개 관점(보안/성능/가독성)의 에이전트에게 동시에 리뷰시키고, 3개가 독립적으로 지적한 항목만 채택
적대적 테스트이미 쓰고 있는 스킬 2개를 골라, 서로 헷갈릴 만한 프롬프트 5개를 만들어 실제 어느 쪽이 발동하는지 확인
감사 추적LLM 필터를 쓰는 코드에 "버린 것 + 사유" 로그를 추가하고, 일주일 뒤 분포를 보고 기준 조정

7시스템 요구사항

GPU도 서버도 필요 없다. 대신 다른 게 든다
항목요구사항비고
하드웨어사실상 없음텍스트 파일 읽고 쓰는 게 전부. 노트북이면 충분
런타임스킬 지원 AI 도구Claude Code, Cursor, OpenClaw 등. README가 명시하는 검증 플랫폼은 Claude Code와 OpenClaw
파일 권한읽기 + 쓰기산출물 디렉토리 생성 필요
컨텍스트클수록 유리부족하면 5만 자 단위 청크 분할로 대응
병렬 에이전트있으면 빠름없으면 직렬 강등 (결과 동일, 시간 5배)
디스크수십 MB산출물이 전부 텍스트
진짜 비용
토큰이 병목이다

책 한 권(20~40만 자)을 5개 추출기가 각각 통독하면 그것만으로 원문의 5배를 읽는다. 여기에 후보 수십 개의 3중 검증, 스킬 20개 × 테스트 7문항의 블라인드 실행이 얹힌다.

저장소가 "무조건 1권 시범 운영 먼저"를 세 군데에서 반복하는 이유다. 대작(《모택동선집》 5권 → 스킬 25개) 같은 사례는 상당한 API 비용을 각오한 결과물로 보는 게 맞다. 정확한 수치는 저장소에 공개돼 있지 않다.

8직접 해볼 수 있는 실습 과제

난이도별 5개
난이도 ★☆☆☆☆

과제 1 — 짧은 글 하나로 파이프라인 맛보기30분~1시간

목표: 책 말고 블로그 글 한 편(3,000~5,000자)으로 전체 흐름을 축소 실행한다.

절차: ① 방법론이 담긴 글 하나를 텍스트 파일로 저장 ② cangjie-skill을 스킬 디렉토리에 설치 ③ AI에게 "이 글을 cangjie-skill로 증류해줘" 요청 ④ 0단계 BOOK_OVERVIEW.md가 나오면 비판 절에 3개가 실제로 채워졌는지 확인

배우는 것: 짧은 글은 3중 검증을 거의 다 탈락한다. "통과율 5% 미만이면 경보"라는 규칙이 왜 있는지 몸으로 안다.

난이도 ★★☆☆☆

과제 2 — 3중 검증을 손으로 돌려보기1~2시간

목표: AI 없이, 본인이 좋아하는 책의 방법론 5개를 골라 V1/V2/V3를 직접 채점한다.

절차: ① 방법론 5개를 뽑아 적는다 ② 각각에 대해 다른 챕터 2곳의 근거를 실제로 찾아 페이지를 적는다 ③ 책에 없는 새 질문을 만들어 그 방법론으로 답해본다 ④ 저자 이름을 지워도 똑똑한 사람이면 할 말인지 판정

배우는 것: 대부분 V1에서 막힌다. 근거 2곳 찾기가 생각보다 어렵다는 걸 알면, 평소 자기가 "책에서 배웠다"고 믿던 것 상당수가 실은 한 문단짜리 인상이었음을 알게 된다.

난이도 ★★★☆☆

과제 3 — 형제 혼동 테스트 만들어 돌리기반나절

목표: 4단계의 핵심인 미끼 문항을 직접 설계해 스킬 간 경합을 관찰한다.

절차: ① 서로 비슷한 스킬 2개를 만든다 (예: "회의록 요약"과 "액션 아이템 추출") ② 각각에 대해 should_trigger 3 / should_not_trigger 2(그중 1개는 형제가 답) / edge_case 1을 작성 ③ 깨끗한 새 세션에서 각 프롬프트를 던지고 실제 발동을 기록 ④ 통과율 계산

배우는 것: 십중팔구 형제 혼동에서 실패가 나온다. description을 어떻게 고쳐야 경계가 서는지, "무엇을 하는가"보다 "무엇을 하지 않는가"를 적는 게 효과적이라는 걸 체감한다.

난이도 ★★★★☆

과제 4 — 도메인을 바꿔 파이프라인 이식하기2~3일

목표: RIA-TV++의 골격을 책이 아닌 대상에 적용한다.

후보: 사내 위키 → 온보딩 스킬 / 과거 장애 보고서 → 트러블슈팅 스킬 / 코드 리뷰 코멘트 이력 → 팀 컨벤션 스킬

핵심 작업: 5개 추출기의 역할 분담을 재설계해야 한다. 장애 보고서라면 "프레임워크/원칙/사례/반례/용어"가 아니라 "증상/원인/조치/오진 패턴/시스템 용어"가 맞을 것이다. 3중 검증도 재정의가 필요하다 — V1의 "2곳 이상 독립 등장"은 "2건 이상 서로 다른 장애에서 등장"이 된다.

배우는 것: 이 저장소의 진짜 자산이 "책 증류"가 아니라 파이프라인 골격임을 확인한다. 골격만 남기고 살을 갈아끼울 수 있으면 완전히 이해한 것이다.

난이도 ★★★★★

과제 5 — 검증자 독립성 문제 해결하기1주+

목표: 2-5절에서 지적한 "한계 1"(생산자와 검증자가 같은 모델)을 실제로 개선한다.

접근 방향:

배우는 것: LLM 자기평가의 근본 한계와, 어디까지가 결정론적 검증으로 대체 가능한지의 경계. 두 번째 항목은 실제로 저장소에 기여할 만한 개선이다.

9관련 기술 심화 학습 로드맵

6주 코스
주차주제할 일도달 목표
1주스킬의 기본기Anthropic 공식 스킬 문서 정독 → SKILL.md frontmatter가 어떻게 로드되는지 확인 → 본인 업무 스킬 1개 작성description 한 줄이 발동을 결정한다는 감각
2주트리거 설계과제 1·3 수행. description을 5가지 버전으로 바꿔가며 같은 프롬프트에 대한 발동률 비교"무엇을 하지 않는가"를 쓰는 습관
3주서브에이전트 오케스트레이션과제 3 확장 — 병렬 스폰, 컨텍스트 격리, 결과 취합 패턴 실습. 격리를 깼을 때 결과가 어떻게 수렴해버리는지 대조 실험독립성이 왜 증거가 되는지 실증
4주평가와 적대적 테스트혼동 행렬, 정밀도/재현율 개념을 스킬 발동에 대입. 미끼 비율을 바꿔가며 측정치가 어떻게 움직이는지 관찰"통과율 100%"가 테스트가 물렁하다는 신호일 수 있음을 판별
5주지식 관리 이론애들러 《독서의 기술》 분석적 독서 파트, 루만 제텔카스텐 개요, 티아고 포르테 점진적 요약을 원전으로 훑기RIA-TV++가 무엇을 빌리고 무엇을 바꿨는지 판별
6주이식과제 4 수행 — 자기 도메인으로 파이프라인 재설계골격과 살을 분리해서 볼 수 있음
순서에 대한 조언

5주차(이론)를 맨 앞에 두고 싶은 충동이 들 수 있는데 권하지 않는다. 애들러를 먼저 읽으면 "좋은 독서법이네"에서 끝난다. 2~4주차에서 트리거가 안 잡히는 고통을 먼저 겪고 나서 원전을 보면, 저자가 왜 비판 단계를 의무화했고 왜 A2에 그렇게 공을 들였는지가 다르게 읽힌다.

10핵심 키워드 사전

이 문서에 나온 용어 총정리
용어
Agent SkillAI 도구에 얹는 마크다운 설명서. SKILL.md 하나로 구성되며 frontmatter의 description이 발동 조건
메타 스킬다른 스킬을 생산하는 스킬. cangjie-skill 본체가 이것
RIA-TV++이 프로젝트의 파이프라인 이름. RIA(독서법) + TV(3중 검증) + E/B(실행·경계 확장)
R / I / A1 / A2 / E / B스킬 본문 6단 구조. 원문 / 재서술 / 과거 적용 / 발동 조건 / 실행 단계 / 경계
A2 (Future Trigger)가장 중요한 단. "사용자가 어떤 상황에서 어떤 말을 할 때 이게 필요한가"를 명세. frontmatter description의 원료
3중 검증 (V1/V2/V3)교차 근거 / 예측력 / 독창성. 셋 다 통과해야 스킬이 됨
V1 교차 근거원문의 독립된 2곳 이상에서 뒷받침되는가. 다른 장 + 다른 대상 + 다른 결론이어야 인정
V2 예측력원문에 없는 새 질문에 유의미한 답을 낼 수 있는가. 못 하면 방법론이 아니라 서술
V3 독창성저자 이름을 지워도 누구나 할 말이면 탈락. 상식은 AI가 이미 안다
미끼 문항 (should_not_trigger)발동하면 안 되는 테스트 프롬프트. 없는 테스트 세트는 무조건 반려
형제 혼동 테스트같은 책의 다른 스킬이 정답인 미끼. 배포 후 최다 장애를 잡는 필수 항목
블라인드 테스트기대 답을 모르는 깨끗한 서브에이전트에게 판정시키는 방식
제텔카스텐루만의 메모 기법. 원자화 + 링크 + 자기 말로 재작성. 3단계 연결의 이론적 근거
애들러 분석적 독서구조 / 해석 / 비판 3단계 독서법. 0단계의 뼈대
PIPELINE_STATE.md진행 상태 파일. 중단 후 이어서 실행하기 위한 체크포인트
candidates/ · rejected/감사 추적용 디렉토리. 후보 원본과 탈락 사유를 보존
DIGEST.md사람이 읽는 5,000~10,000자 정수 장문. 검증 통과분만 담기므로 일반 요약보다 농도가 높음
점진적 공개진입점은 얇게, 상세는 별도 파일로 미뤄 컨텍스트를 아끼는 설계
강등 경로 (degradation path)선택적 기능이 없는 환경에서 대신 할 방법을 프롬프트에 미리 명시하는 것
nuwa-skill자매 프로젝트. 사람을 증류 (사고방식·표현 DNA)
darwin-skill자매 프로젝트. 스킬을 자동 진화. cangjie의 test-prompts.json이 이 포맷을 따르는 이유

11참고 링크

더 파고들 곳

본 저장소

이 파이프라인으로 실제 생산된 결과물 (샘플로 읽어볼 것)

생태계 자매 프로젝트

배경 지식