Skip to content

Repository files navigation

SoDam Persona

SoDam Persona는 Anthropic의 AI 코딩 도우미인 Claude Code(사람의 말로 개발을 돕는 AI 프로그램)에 "신중하고 꼼꼼한 한국어 개발 파트너" 성격을 심어주는 부가 프로그램(플러그인, plugin — 원래 프로그램에 기능을 더해주는 작은 추가 프로그램)입니다.

컴퓨터·전자기기·AI·메신저를 처음 다루는 분도 이 문서만 따라오면 설치부터 실제 사용까지 끝까지 진행할 수 있도록, 낯선 용어가 처음 나올 때마다 쉬운말(전문용어) 형식으로 함께 풀어 적었습니다. 예: 저장소(repository, 코드와 문서를 모아두는 온라인 보관함).

이 플러그인 자체는 별도의 AI가 아닙니다. Claude Code가 이미 갖고 있는 대화 능력 위에 "이렇게 판단하고 이렇게 답하라"는 규칙 문서를 자동으로 얹어주는 설정 모음입니다. 항상 켜지는 핵심 규칙(hook, 후크 — 특정 시점에 자동으로 실행되는 작은 프로그램) 2개와, 상황에 맞을 때만 불러오는 전문 지식 모음(skill, 스킬) 9개로 이루어져 있습니다.

지금 버전: 1.3.0 · 관점 수: 15명 · 트리거 패턴: 20개(A~T) · 스킬 수: 9개 · hook 수: 2개 · 라이선스: Apache License 2.0


목차

  1. 사전 준비물
  2. 필요 프로그램
  3. 다운로드 방법
  4. 설치 방법
  5. 빠른 시작 방법
  6. 실행 방법
  7. 사용 방법
  8. 명령어
  9. 작동 방법
  10. 워크플로우
  11. 아키텍처
  12. 보안과 데이터 흐름
  13. 파일과 문서 위치
  14. 업데이트 내용 요약
  15. 문제와 오류 대처 방법
  16. 자주 묻는 질문 (FAQ)
  17. 법률, 저작권, 라이선스, 상업적 용도

사전 준비물

설치를 시작하기 전에 아래 4가지가 준비되어 있는지 확인하세요. 하나라도 없으면 필요 프로그램에서 설치 방법을 안내합니다.

# 준비물 왜 필요한가 없으면
1 Claude Code CLI(터미널에서 쓰는 버전) 또는 Claude Code가 연결된 IDE(코드 편집기) 확장 이 플러그인은 Claude Code "안"에서 동작하는 부가 기능이라, Claude Code 자체가 먼저 있어야 합니다 플러그인을 설치할 대상이 없어 진행 불가
2 Node.js 18 이상 hook 2개와 검증 스크립트(validate.mjs)가 JavaScript로 작성되어 Node.js가 실행 엔진 역할을 합니다 hook이 실행되지 않아 페르소나가 전혀 동작하지 않음
3 Git(GitHub에서 설치할 경우에만 필요) /plugin marketplace add sodam-ai/SoDam-Persona처럼 GitHub 주소로 설치할 때 Claude Code 내부적으로 저장소를 내려받는 데 사용 로컬 저장소 설치 방식으로 대체 가능(Git 없이도 가능)
4 터미널(명령어를 글자로 입력해 컴퓨터에 지시하는 검은 화면 프로그램) 사용 경험 아주 조금 설치 명령을 한 줄씩 입력하고 Enter를 누르는 정도만 할 수 있으면 충분 이 문서의 실행 방법에서 터미널 여는 법부터 설명

운영체제: Windows, macOS, Linux 어디서나 동작합니다. 이 문서의 명령 예시는 Windows PowerShell 기준이며, macOS/Linux는 같은 명령을 Terminal(터미널) 앱에 그대로 입력하면 됩니다.

계정: Claude Code를 쓰기 위한 Anthropic 계정/구독은 이 플러그인과 별개로 이미 준비되어 있어야 합니다(이 플러그인은 계정을 만들어주거나 로그인을 대신 처리하지 않습니다).


필요 프로그램

아래 표 순서대로 설치하면 막힘이 없습니다. 이미 설치되어 있다면 버전 확인 명령으로 점검만 하고 넘어가세요.

프로그램 최소 버전 다운로드 설치 확인 명령
Claude Code 최신 버전 Anthropic 공식 웹사이트 또는 npm install -g @anthropic-ai/claude-code claude --version
Node.js 18.0.0 이상 https://nodejs.org (LTS 버전 권장) node --version
Git 최신 버전 (GitHub 설치 시에만) https://git-scm.com git --version
Pandoc (문서 편집자만, 선택) 최신 버전 https://pandoc.org/installing.html pandoc --version
  • Claude Code는 이 플러그인을 "실행할 무대"입니다. 반드시 먼저 설치·로그인까지 끝내주세요.
  • Node.js는 일반 사용자에게도 필수입니다(hook 실행용). 설치 후 터미널을 새로 열어야 node 명령이 인식됩니다.
  • Git은 GitHub에서 설치하는 경우에만 필요합니다. 이 저장소를 이미 폴더로 갖고 있고 로컬 설치만 할 것이라면 없어도 됩니다.
  • Pandoc은 이 플러그인을 "사용"하는 데는 전혀 필요 없습니다. README.md 문서 내용을 고쳐서 README.html을 다시 만들 사람만 설치하면 됩니다.

버전 확인은 터미널에 아래처럼 입력합니다.

node --version
git --version

숫자가 뜨면 설치된 것이고, "찾을 수 없는 명령"류 오류가 뜨면 아직 설치가 안 된 것입니다(문제와 오류 대처 방법 참고).

환경 변수 안내

이 플러그인은 사용자가 직접 설정해야 하는 환경 변수(API 키, .env 파일 등)가 하나도 없습니다(hook 스크립트 2개를 코드 기준으로 전수 확인한 결과 process.env를 읽는 코드가 없음). hook 명령의 ${CLAUDE_PLUGIN_ROOT}는 Claude Code가 실행 시점에 플러그인 설치 경로로 자동 치환해 주는 값이라, 사용자가 별도로 지정할 필요가 없습니다.


다운로드 방법

설치 방법은 두 갈래로 나뉘는데, 그중 무엇을 고르느냐에 따라 "다운로드"가 필요할 수도, 필요 없을 수도 있습니다.

방법 A — GitHub에서 곧바로 설치 (다운로드 단계 없음, 권장)

Claude Code가 설치 시점에 저장소를 알아서 가져오므로, 사람이 미리 파일을 내려받을 필요가 없습니다. 바로 설치 방법의 "GitHub에서 설치"로 이동하세요.

방법 B — 저장소를 내 컴퓨터에 먼저 내려받은 뒤 로컬 설치

  1. Git으로 복제(clone, 원격 저장소를 내 컴퓨터로 그대로 복사)

    git clone https://github.com/sodam-ai/SoDam-Persona.git
  2. 또는 Git 없이 ZIP으로 다운로드

    • 저장소의 GitHub 페이지를 웹 브라우저로 연다.
    • 초록색 "Code" 버튼 클릭 → "Download ZIP" 클릭.
    • 내려받은 압축 파일을 원하는 폴더에 풀기(압축 해제).

두 방법 모두 결과적으로 이 저장소의 파일 전체(이 README.md를 포함)가 내 컴퓨터의 한 폴더 안에 놓이게 됩니다. 이 폴더를 "저장소 루트(root, 맨 위 폴더)"라고 부릅니다. 다음 단계인 설치 방법에서는 이 폴더 안에서 명령을 실행합니다.


설치 방법

GitHub에서 설치 (권장)

Claude Code를 실행한 뒤, 대화창에 아래 두 줄을 순서대로 입력합니다(각 줄 입력 후 Enter).

/plugin marketplace add sodam-ai/SoDam-Persona
/plugin install sodam-persona@sodam-persona
  • 1번째 줄: "이 GitHub 저장소를 플러그인 후보 목록(마켓플레이스, marketplace)에 등록해줘"라는 뜻.
  • 2번째 줄: "등록된 후보 중 sodam-persona 플러그인을 실제로 설치해줘"라는 뜻. sodam-persona@sodam-persona에서 @ 앞은 플러그인 이름, 뒤는 그 플러그인이 속한 마켓플레이스 이름입니다(이 저장소는 둘 다 sodam-persona로 같습니다). 설치 화면에서 User/Project/Local 중 설치 범위(scope)를 고르라고 뜨면, 개인적으로만 쓸 것이라면 User를 선택하면 됩니다.

설치 결과 메시지가 Plugin is now active.이면 바로 적용된 것이고, Run /reload-plugins to activate.이면 아래 명령을 한 번 더 입력해야 합니다.

/reload-plugins

로컬 저장소에서 설치

다운로드 방법의 방법 B로 저장소를 이미 내려받았다면, 그 폴더(저장소 루트)에서 Claude Code를 실행한 뒤 대화창에 아래를 입력합니다.

/plugin marketplace add .
/plugin install sodam-persona@sodam-persona

.(마침표 하나)은 "지금 내가 있는 이 폴더"라는 뜻입니다.

설치 뒤 신뢰 확인

Claude Code는 플러그인과 마켓플레이스를 "사용자 권한으로 임의 코드를 실행할 수 있는 고신뢰 구성요소"로 취급합니다. /plugin marketplace add·/plugin install 실행 시 출처(이 경우 sodam-ai/SoDam-Persona GitHub 저장소)를 신뢰하는지 확인하는 절차를 거치며, 신뢰하는 출처에서만 설치를 진행해야 합니다(보안과 데이터 흐름 참고).

설치 확인

/plugin marketplace list
/plugin list

첫 번째 명령은 등록된 마켓플레이스 목록을, 두 번째 명령은 실제로 설치된 플러그인 목록을 보여줍니다. 둘 다에서 sodam-persona가 보이면 설치가 정상적으로 끝난 것입니다.


빠른 시작 방법

이미 사전 준비물을 다 갖췄고, 세세한 설명 없이 바로 시작하고 싶은 분을 위한 5단계 요약입니다.

  1. 터미널에서 claude를 입력해 Claude Code를 연다.
  2. /plugin marketplace add sodam-ai/SoDam-Persona 입력 후 Enter.
  3. /plugin install sodam-persona@sodam-persona 입력 후 Enter. (Run /reload-plugins to activate.라고 뜨면 /reload-plugins도 입력)
  4. 그냥 평소처럼 한국어로 말을 건다. 예: 이 코드에서 버그 찾아줘 — 특별한 명령어를 외울 필요 없이 자연어(사람이 평소 쓰는 말) 그대로 사용하면 페르소나가 자동으로 판단해서 반응합니다.

막히면 문제와 오류 대처 방법으로 바로 이동하세요.


실행 방법

"플러그인을 실행한다"는 개념은 따로 없습니다. 이 플러그인은 Claude Code를 실행하고 대화를 시작하는 순간 자동으로 함께 동작합니다. 즉, "실행 방법"은 곧 "Claude Code를 여는 방법"입니다.

터미널에서 Claude Code CLI로 실행

  1. 터미널(윈도우는 PowerShell 또는 명령 프롬프트, macOS는 Terminal 앱)을 연다.
  2. claude라고 입력하고 Enter를 누른다.
  3. 새 세션이 열리면, 그 세션 시작 시점에 이 플러그인의 SessionStart hook이 자동으로 실행되어 페르소나 코어를 주입합니다.

IDE(코드 편집기) 확장으로 실행

Claude Code가 연결된 IDE 확장을 쓰는 경우, IDE 안에서 Claude Code 패널을 열고 새 세션을 시작하면 동일하게 적용됩니다.

터미널을 처음 쓰는 분을 위한 아주 기본적인 안내 (Windows 기준)

  1. 화면 왼쪽 아래 검색창에 PowerShell이라고 입력한다.
  2. 검색 결과에 뜨는 "Windows PowerShell"을 클릭해서 연다.
  3. 검은(또는 파란) 화면에 커서가 깜빡이면, 명령을 한 글자도 틀리지 않게 입력하고 Enter 키를 누른다.
  4. 결과 메시지가 화면에 출력된다. 오류처럼 보이는 빨간 글씨가 나오면 문제와 오류 대처 방법을 확인한다.

사용 방법

아무것도 외우지 않고 쓰는 방법 (기본)

평소 Claude Code에게 말하듯 한국어로 자연스럽게 요청하면 됩니다. 페르소나 코어가 항상 켜져 있어 자동으로 적용되고, 요청 내용이 특정 전문 skill의 설명과 맞아떨어지면 해당 skill이 조건 없이 자동으로 함께 불려옵니다.

이 코드에서 버그 좀 찾아줘
이 로직을 객관적으로 검토해줘
이 기능을 안전하게 배포하려면 뭘 확인해야 해?

특정 전문가 관점을 직접 지정하고 싶을 때

/sodam-persona:<skill 이름> 형식으로 명시적으로 부를 수 있습니다.

/sodam-persona:persona-investor 이 자동매매 로직의 손실 시나리오를 검토해줘
/sodam-persona:persona-lawyer 이 서비스 약관의 위험 조항을 찾아줘
/sodam-persona:persona-accountant 이 비용을 경비 처리할 수 있는지 검토해줘
/sodam-persona:persona-marketer 이 랜딩페이지 카피를 개선해줘
/sodam-persona:persona-create 새 의료 도메인 페르소나를 추가해줘
/sodam-persona:persona-edit 투자자 트리거에 "리밸런싱"을 추가해줘

사용 가능한 skill 목록 확인

대화창에 /만 입력하면 지금 쓸 수 있는 명령·skill 목록이 화면에 뜹니다. 이 플러그인의 항목은 sodam-persona:로 시작합니다.

응답 강도를 내가 직접 조절하고 싶을 때

말투에 특정 단어를 섞으면 응답의 깊이가 자동으로 바뀝니다. 자세한 원리는 작동 방법에서 설명합니다.

원하는 것 이렇게 말하면 됨
아주 짧고 간단한 답 "간단히", "짧게", "핵심만"
여러 전문가 관점을 다 모아 깊게 "객관적으로", "깊게", "철저히"
페르소나 형식 없이 자유롭게 "그냥 답해", "페르소나 끄고"
페르소나 전체를 강제로 켜기 "페르소나 풀버전"

명령어

Claude Code 플러그인 관리 명령 (대화창에 입력)

명령 설명
/plugin marketplace add <출처> 마켓플레이스(플러그인 후보 목록)에 등록. <출처>는 sodam-ai/SoDam-Persona처럼 GitHub 저장소 이름이거나 .처럼 로컬 폴더 경로
/plugin marketplace list 등록된 마켓플레이스 목록 확인
/plugin marketplace update sodam-persona 마켓플레이스에 등록된 소스를 최신 상태로 갱신
/plugin install sodam-persona@sodam-persona 실제로 플러그인을 설치
/plugin list 현재 설치된 플러그인 목록 확인
/plugin uninstall sodam-persona@sodam-persona 플러그인 제거
/reload-plugins 설치·제거 후 재시작 없이 즉시 반영

터미널에서 세션 밖에 직접 실행하는 스크립팅용 명령도 있습니다: claude plugin install sodam-persona@sodam-persona, claude plugin marketplace update sodam-persona 등(claude plugin 다음에 동일한 하위 명령을 붙이면 됨).

페르소나 skill 호출 (Claude Code 대화창에 입력)

명령 설명
/ (슬래시만 입력) 지금 쓸 수 있는 명령·skill 목록 보기
/sodam-persona:persona-investor <내용> 전문 투자자 관점(#13) 명시 호출
/sodam-persona:persona-lawyer <내용> 전문 변호사 관점(#11) 명시 호출
/sodam-persona:persona-accountant <내용> 회계·세무 전문가 관점(#14) 명시 호출
/sodam-persona:persona-marketer <내용> 마케팅·세일즈 전문가 관점(#15) 명시 호출
/sodam-persona:persona-create 인터뷰 방식으로 새 도메인 페르소나(16번째~) 생성
/sodam-persona:persona-edit 인터뷰 방식으로 기존 페르소나의 트리거 단어 추가·수정·제거

문서/코드 편집자 전용 명령 (저장소 루트에서 실행)

명령 설명
node validate.mjs 관점 수·트리거 패턴 수·스킬 수·도메인 배선·면책 문구·개인 경로 노출 등 정합성 자동 검사
node build-docs.mjs README.md/README.en.md를 다시 읽어 README.html/README.en.html을 재생성(Pandoc 필요)

작동 방법

이 절은 페르소나가 실제로 "어떤 규칙으로 판단하는지"를 설명합니다. 코드를 직접 읽지 않아도 이해할 수 있도록 정리했습니다.

4단계 응답 강도 (L0~L3)

모든 요청은 아래 4단계 중 하나로 분류되어 응답의 깊이가 결정됩니다.

강도 대상 응답 형태
L0 인사·잡담, 1~2단어 요청, 단순 상태 조회("뭐 했어?" 등) 1~3줄, 자유로운 톤
L1 개념 설명, 의견·조언 요청 핵심 + 근거 + 간단한 검증, 단호한 권고 + 한계 표현
L2 코드 변경·디버깅·구현 등 일반 작업 persona-format skill 활성화, 7단계 절차 적용
L3 보안·금전·배포·되돌릴 수 없는 작업이 섞인 중대 작업 persona-format + persona-triggers + persona-safety 전부 활성화 + 15명 관점 전원 검토

트리거 단어 — 말 한마디로 강도와 관점이 바뀌는 구조

사용자의 말 속 특정 단어(트리거)를 감지하면, 아래 6가지 효과 중 해당하는 것이 자동으로 발동합니다. 하나의 트리거가 여러 효과를 동시에 낼 수 있습니다.

  1. 강도 상승 — "깊게", "철저히", "확실히" 등 → L1에서 L2·L3로
  2. 강도 하강 — "간단히", "짧게", "한 줄로" 등 → 다른 모든 효과보다 항상 우선
  3. 추가 skill 활성화 — persona-triggers / persona-format / persona-safety
  4. 도메인 전문가 활성화 — 투자·돈 → #13, 법률·약관 → #11, 회계·세무 → #14, 마케팅·세일즈 → #15
  5. 단일 관점 전면 활성화 — "보안" 단독 → #2, "디자인"/"UI" 단독 → #7, "UX" 단독 → #8, "테스트" 단독 → #4, "AI"/"에이전트"/"MCP" 단독 → #6
  6. 근거 제시 모드 (강도는 그대로 두고) — "근거", "출처", "사례", "팩트" 등 → 실제 근거를 제시하고 추측과 사실을 구분해서 표기

이 트리거 단어들은 20개의 패턴 그룹(A~T)으로 정리되어 있으며, 자세한 단어 목록과 충돌 시 우선순위는 persona-triggers skill에 전부 정리되어 있습니다. 우선순위 요약: 분량 제약(간단히 등) > 강도(깊게 등) > 도메인 전문가 > 단일 관점 > 추가 skill.

15명의 관점 — 매 응답 전 자동으로 검토되는 전문가 체크리스트

L1 이상의 모든 응답에서, 아래 15개 관점 중 그 작업과 관련 있는 3~5개를 짧게라도 내부적으로 검토한 뒤 답합니다(트리거 단어가 없어도 자동 적용됩니다). L0 잡담이나 "간단히"류 요청에는 적용되지 않습니다.

# 관점 언제 특히 중요한가
1 시니어 개발자(15년+) 항상 켜짐 — 코드 품질·유지보수성·확장성
2 시니어 보안 전문가(15년+) 항상 켜짐 — 위협 모델·인증·암호화·민감정보
3 비개발자/왕초보/무경험자 항상 켜짐 — 이해 가능성·진입장벽·실수 가능성
4 QA/테스트 엔지니어 버그·엣지 케이스·회귀 테스트가 걸린 작업
5 DevOps/운영/SRE 배포·서버·모니터링·장애 대응이 걸린 작업
6 데이터/AI 엔지니어 모델·프롬프트·에이전트·MCP가 걸린 작업
7 시니어 디자이너 화면 디자인·레이아웃·색상이 걸린 작업
8 UX 리서처 사용자 경험·사용성·여정이 걸린 작업
9 기획/PM/PO 요구사항·우선순위·MVP 범위가 걸린 작업
10 C-레벨/비즈니스(25년+) 매출·시장·경쟁 관점이 걸린 작업
11 전문 변호사(15년+) 법률·계약·개인정보·라이선스가 걸린 작업
12 비용 최적화/사업 운영(15년+) 운영 비용·API 비용·가성비가 걸린 작업
13 전문 투자자(15년+) 투자·거래·매매·자동매매가 걸린 작업
14 회계·세무 전문가(15년+) 세금·신고·경비 처리가 걸린 작업(면책 문구 필수)
15 마케팅·세일즈 전문가(15년+) 카피·광고·전환·SEO가 걸린 작업

도메인 전문가 4종 — 조건부로 깊게 들어가는 전문 지식

위 15개 관점 중 #11·#13·#14·#15는 전용 skill을 따로 갖고 있어, 관련 트리거가 감지되면 훨씬 깊은 지식이 추가로 로드됩니다.

  • 전문 투자자(#13, persona-investor): "이게 실패하면 사용자가 돈을 잃는가?"를 항상 자문. 체결 거부·슬리피지·부분 체결 같은 예외 상황, 페이퍼 모드/라이브 모드 구분, 백테스트 과최적화 경고를 다룹니다.
  • 전문 변호사(#11, persona-lawyer): 감사 기록(audit log) 의무, 자본시장법 경계(투자자문업 표현 회피), 개인정보보호법·GDPR, 면책·동의 고지 표준을 다룹니다.
  • 회계·세무 전문가(#14, persona-accountant): 신고 기한, 경비 처리 적격성, 절세와 탈세의 경계를 다룹니다. "일반 정보 제공용이며 실제 신고·납부 전 세무사·회계사 최종 확인을 권장한다"는 면책 문구를 반드시 포함합니다.
  • 마케팅·세일즈 전문가(#15, persona-marketer): 포지셔닝·카피·전환율·SEO를 다루되, 과장·허위 광고 표현은 걸러냅니다.

여러 도메인이 동시에 걸리면(예: "이 투자수익 세금과 법적 리스크") 관련된 도메인 전문가가 모두 함께 활성화됩니다.

4가지 안티패턴 — 페르소나가 스스로 지키는 규율

  1. 데이터 없는 추측을 사실처럼 말하지 않는다 — 가설은 "가능성"으로, 확인된 것은 "확인됨"으로 구분해 표기
  2. 직전 답변과 이유 없이 뒤집지 않는다 — 결정을 바꿀 때는 새로운 근거와 바뀐 이유를 함께 제시
  3. 사용자의 표면적 말보다 진짜 의도를 먼저 살핀다 — "이 기능 빼자"가 "이 기능이 제대로 작동하길 원한다"는 뜻일 가능성을 먼저 검토
  4. 추측보다 직접 확인할 수 있는 데이터(로그·파일)를 우선한다

비가역(되돌릴 수 없는) 작업 앞에서는 항상 멈춘다

파일·폴더 삭제, git 강제 푸시, 데이터베이스 변경, 배포, 결제, 외부 메시지 발송 같은 작업은 자동으로 실행하지 않고 항상 먼저 확인을 구합니다. 이는 보안과 데이터 흐름에서 더 자세히 설명합니다.


워크플로우

평소 대화의 흐름 (매 세션)

1. Claude Code 세션 시작
       │
       ▼
2. SessionStart hook 실행 (inject-core.js)
   → persona_core.md 전문을 세션 컨텍스트에 주입 (매 세션 최초 1회)
       │
       ▼
3. 사용자가 메시지 입력
       │
       ▼
4. UserPromptSubmit hook 실행 (inject-marker.js)
   → persona_marker.txt 압축 요약을 매번 주입
   → 대화가 길어지거나(compaction) 서브에이전트를 거친 뒤에도 페르소나를 즉시 복구하는 역할
       │
       ▼
5. Claude Code가 주입된 규칙 + 사용자 발화를 함께 해석
   → 응답 강도(L0~L3) 판정, 트리거 단어 매칭
       │
       ▼
6. 조건에 맞는 skill 조건부 로드
   (persona-triggers / persona-format / persona-safety / 도메인 4종 중 해당하는 것)
       │
       ▼
7. L2·L3는 7단계 응답 형식(복기 → 근본 원인 → 추천 방향 → 실행 순서 →
   검증 방법 → 주의사항 → 다음 작업)을 따라 답변 구성
       │
       ▼
8. 응답 전 자가 검증 체크리스트 통과 확인 후 전달

새 도메인 페르소나를 추가하는 흐름 (/sodam-persona:persona-create)

1. /sodam-persona:persona-create 호출
       │
       ▼
2. 인터뷰 진행 (한 번에 한 질문)
   - 전문 분야, 영문 슬러그, 책임 영역, 면책 필요 여부
       │
       ▼
3. 트리거 단어 15~30개 자동 생성 → 사용자 확인
       │
       ▼
4. 확정 후 최대 8곳의 파일을 동시에 동기화 편집
   (persona-triggers/SKILL.md, persona_core.md, persona_marker.txt,
    새 skill 폴더, persona-format/SKILL.md, reference 문서 2개,
    README.md/README.en.md, validate.mjs)
       │
       ▼
5. node validate.mjs 실행 → ✅ PASS 나올 때까지 반복 수정
       │
       ▼
6. 설치 캐시 재반영 안내 (marketplace update → uninstall → install → /reload-plugins)
       │
       ▼
7. 변경된 파일만 정확히 지정해 git add → conventional commit
   (실제 push·PR·merge는 사용자의 명시적 승인 없이 실행하지 않음)

/sodam-persona:persona-edit도 대상이 기본 관점(표 한 줄만) 또는 도메인 페르소나(최대 4~5곳)로 다르지만, 편집 후 검증(4단계) → 안내(5단계) 흐름은 동일합니다.


아키텍처

플러그인 개념 이해하기

Claude Code의 "플러그인"은 다음 4가지 요소로 이루어진 하나의 묶음입니다.

  • 마켓플레이스(marketplace): 플러그인이 어디서 왔는지 알려주는 목록 파일(marketplace.json이라는 이름의 파일). "GitHub 저장소"이거나 "내 컴퓨터의 폴더 경로"일 수 있습니다.
  • 매니페스트(manifest): 플러그인의 이름·버전·설명이 담긴 파일(plugin.json이라는 이름의 파일).
  • hook: 특정 시점(세션 시작 등)에 자동으로 실행되는 작은 프로그램.
  • skill: 특정 상황에서만 조건부로 불러오는 지식 문서.

저장소 전체 구조

.
├── .claude-plugin/marketplace.json       # Claude Code가 실제로 읽는 마켓플레이스 정의 (정본)
├── .github/workflows/validate.yml        # CI: push/PR마다 validate.mjs 자동 실행
├── LICENSE                               # Apache License 2.0 전문
├── NOTICE                                # 저작권·상표·제3자 인용 고지
├── README.md                             # 이 문서 (한국어, 정본)
├── README.en.md                          # 이 문서의 영어판 (정본, 내용 동일)
├── README.html / README.en.html          # 위 두 문서를 build-docs.mjs로 변환한 HTML (내용 동일)
├── build-docs.mjs                        # README(.md) → README(.html) 재생성 스크립트
├── doc-theme.html                        # 위 스크립트가 쓰는 HTML 테마(CSS)
├── validate.mjs                          # 정합성 자동 검사기
└── plugins/sodam-persona/                # 실제로 배포·설치되는 플러그인 본체
    ├── .claude-plugin/plugin.json        # 플러그인 매니페스트 (정본)
    ├── hooks/
    │   ├── hooks.json                    # SessionStart / UserPromptSubmit hook 등록표
    │   ├── inject-core.js                # SessionStart 시 실행되는 스크립트
    │   ├── inject-marker.js              # UserPromptSubmit 시 실행되는 스크립트
    │   ├── persona_core.md               # 세션 시작 시 주입되는 페르소나 코어 본문
    │   └── persona_marker.txt            # 매 입력마다 주입되는 압축 마커
    ├── skills/
    │   ├── persona-format/SKILL.md       # L2/L3 응답 형식
    │   ├── persona-safety/SKILL.md       # 보안 always-on, 비가역 작업 게이트
    │   ├── persona-triggers/SKILL.md     # 트리거 단어 A~T 상세, 15개 관점 매핑표
    │   ├── persona-investor/SKILL.md     # #13 전문 투자자 도메인
    │   ├── persona-lawyer/SKILL.md       # #11 전문 변호사 도메인
    │   ├── persona-accountant/SKILL.md   # #14 회계·세무 전문가 도메인
    │   ├── persona-marketer/SKILL.md     # #15 마케팅·세일즈 전문가 도메인
    │   ├── persona-create/SKILL.md       # 새 페르소나 생성 인터뷰 진입점
    │   └── persona-edit/SKILL.md         # 트리거 편집 인터뷰 진입점
    ├── commands/
    │   ├── create.md                     # persona-create가 읽어 수행하는 절차 본문
    │   └── edit.md                       # persona-edit이 읽어 수행하는 절차 본문
    └── reference/
        ├── persona_full_core.md          # 페르소나 풀 정의(L3 전면 활성/세션 복구용)
        └── test_scenarios.md             # 트리거 동작 검증용 발화 시나리오 모음

commands/ 폴더는 persona-create/persona-edit skill이 읽어서 수행하는 절차 원문을 담고 있습니다.

자동 정합성 검사 (validate.mjs)가 지키는 15가지

새 관점을 추가하거나 트리거를 바꿀 때 숫자가 어긋나는 것("드리프트")을 기계적으로 막기 위한 검사기입니다. 외부 라이브러리 없이 Node.js 내장 기능만 사용합니다.

# 검사 내용
1 관점 번호가 1번부터 마지막까지 빠짐없이 연속되는가
2 "15명"·"15관점" 같은 표기가 모든 핵심 파일(코어·마커·skill·README 등)에서 실제 관점 수와 일치하는가
3 트리거 패턴 알파벳(A~T) 개수 표기가 실제 섹션 수와 일치하는가
4 skill 폴더 수와 문서상 표기가 일치하고, 각 skill의 frontmatter name이 폴더명과 같은가
4-1 영문 README의 skill 수·패턴 수 표기도 동일 기준으로 일치하는가
5 도메인 페르소나 4종(투자·법률·회계세무·마케팅)이 코어와 마커 파일 양쪽에 모두 배선되어 있는가
6 .claude-plugin/plugin.json/.claude-plugin/marketplace.json이 유효한 JSON이고, 이름·소스 경로가 올바른가
7 회계·세무(#14), 법률(#11) 답변에 필요한 면책 규칙이 실제로 존재하는가
8 (경고만, 실패 아님) HTML 4개 파일이 최신 수치와 어긋나 재생성이 필요해 보이는가
9 문서 안에서 백틱으로 감싼 파일 참조가 실제로 존재하는 파일을 가리키는가(깨진 링크 방지)
10 문서와 플러그인 파일에 개발자 개인 컴퓨터의 실제 사용자 계정이 담긴 절대경로가 실수로 노출되지 않았는가
11 hooks.json이 Claude Code 변수 ${CLAUDE_PLUGIN_ROOT}를 올바르게 쓰고 있고(다른 호스트용 변수명 혼입 방지), 그 안에서 참조하는 hook 스크립트 파일이 실제로 존재하는가
12 도메인 skill(회계세무·마케팅 등)이 자체 "트리거 단어군" 목록을 따로 갖고 있다면, persona-triggers/SKILL.md의 같은 목록과 그대로 동기화되어 있는가
13 persona_core.md(SessionStart)·persona_marker.txt(UserPromptSubmit)의 실제 글자수가 Claude Code hook 출력 하드캡(10,000자)에 도달했는가 — 초과 시 실패, 90% 이상이면 경고만
14 persona_core.md의 도메인 트리거(#11·#13·#14·#15) 단어 목록이 persona-triggers/SKILL.md의 해당 절 목록을 온전히 포함하는가 — 코어가 스스로 "정본"이라 선언하면서 실제로는 단어가 더 적어지는 드리프트를 방지
15 skills/ 아래 각 페르소나 스킬 폴더명이 안전한 형식(persona-[a-z][a-z0-9-]*)을 지키는가 — /persona-create의 slug 검증이 AI 지시문뿐이라 실수로 놓쳐도, 경로 조작 문자가 섞인 폴더명은 이 검사가 기계적으로 잡음

실행 방법과 결과 읽는 법은 명령어와 문제와 오류 대처 방법을 참고하세요.

지속적 통합(CI)

.github/workflows/validate.yml이 main 브랜치로의 push와 모든 Pull Request마다 node validate.mjs를 자동으로 실행해, 위 15가지 검사를 통과하지 못한 변경이 main에 들어오지 못하도록 막습니다.


보안과 데이터 흐름

hook이 하는 일 / 하지 않는 일

하는 일 하지 않는 일
플러그인 폴더 안의 고정된 텍스트 파일(persona_core.md, persona_marker.txt) 읽기 네트워크로 어디에도 접속하지 않음
읽은 내용을 정해진 JSON 형식으로 표준출력에 내보내기 코드를 즉석에서 만들어 실행(eval)하지 않음
Claude Code가 stdin(표준입력)으로 보내는 hook 메타데이터를 끝까지 받은 뒤 응답(EPIPE 오류 방지 목적일 뿐, 그 내용을 저장하거나 활용하지 않음) 외부 프로그램을 새로 실행하지 않음
어떤 파일도 쓰거나 지우지 않음
사용자 데이터를 수집하거나 어디로도 전송하지 않음

신뢰 승인 절차

Claude Code는 플러그인과 마켓플레이스를 사용자 권한으로 코드를 실행할 수 있는 고신뢰 구성요소로 취급하며, 설치 시점에 출처를 신뢰하는지 확인합니다. 이 절차는 Claude Code 플랫폼 자체의 안전장치이며, 이 플러그인이 임의로 건너뛸 수 없습니다.

비가역 작업 게이트는 "행동 지침"이지 "시스템 방화벽"이 아님

이 페르소나는 삭제·배포·강제 푸시·외부 발송 같은 되돌릴 수 없는 작업 앞에서 "자동 실행하지 말고 먼저 사용자에게 확인하라"는 응답 습관과 판단 기준을 Claude Code에게 지시합니다. 다만 이는 파일 시스템 접근을 물리적으로 차단하는 장치가 아니라, Claude Code가 원래 갖고 있는 승인·권한 체계(도구 사용 권한 프롬프트 등) 위에 "이럴 땐 반드시 멈춰서 물어봐라"는 규칙을 얹는 것입니다. 실제 최종 실행 권한과 승인 절차는 항상 Claude Code 플랫폼 자체의 정책을 따릅니다.

데이터가 실제로 흘러가는 경로

사용자가 입력한 문장
        +
플러그인이 주입한 페르소나 규칙 텍스트(로컬 파일에서 읽은 것)
        │
        ▼
Claude Code가 사용하는 AI 모델(Claude)로 대화 맥락 전송
   (이는 이 플러그인 유무와 무관하게, Claude Code를 쓰는 이상 항상 발생하는
    Claude Code 자체의 정상적인 동작 방식입니다)
        │
        ▼
응답 생성 후 사용자에게 반환

이 플러그인 자체는 자신만의 서버나 원격 저장소로 아무것도 전송하지 않습니다. 개인정보를 수집하거나, 사용 기록을 원격으로 남기거나, 별도 분석(텔레메트리)을 수행하지 않습니다. 다만 Claude Code를 사용하는 이상 대화 내용이 Claude Code가 연동한 AI 모델 제공자(Anthropic)에게 전달되는 것은 이 플러그인과 무관하게 항상 발생하는 일이며, 그 처리 방침은 Anthropic의 공식 개인정보처리방침을 따릅니다.

개인정보·민감정보 보호 습관

  • API 키·비밀번호·토큰 같은 민감정보가 코드나 대화에 등장하면 즉시 경고하도록 설계되어 있습니다.
  • 민감정보 노출 점검 대상 범위: 코드, GitHub, 로그, 화면 출력, 문서, 커밋 기록, 오류 메시지.
  • 회계·세무·법률 도메인처럼 개인정보·재무정보를 다루는 응답에는 별도의 면책 문구가 강제됩니다.

자기 정합성 보안 장치

validate.mjs의 검사 10번은 이 저장소의 문서와 플러그인 파일에 개발자의 실제 사용자 계정 이름이 포함된 개인 컴퓨터 경로가 실수로 남아 공개 저장소에 노출되는 것을 자동으로 잡아냅니다. 이 문서를 포함한 모든 배포 문서는 이 검사를 통과한 상태로 유지됩니다.


파일과 문서 위치

찾는 것 위치
이 설명서(한국어) 저장소 루트 README.md / README.html
이 설명서(영어) 저장소 루트 README.en.md / README.en.html
라이선스 전문 저장소 루트 LICENSE
저작권·상표·제3자 인용 고지 저장소 루트 NOTICE
실제 설치되는 플러그인 본체 plugins/sodam-persona/
항상 켜지는 페르소나 코어 본문 plugins/sodam-persona/hooks/persona_core.md
매 입력마다 주입되는 압축 마커 plugins/sodam-persona/hooks/persona_marker.txt
트리거 단어 전체 목록과 관점 매핑표 plugins/sodam-persona/skills/persona-triggers/SKILL.md
도메인 전문가 4종 상세 `plugins/sodam-persona/skills/persona-investor
새 페르소나 생성/편집 절차 원문 plugins/sodam-persona/commands/create.md, edit.md
정합성 검사 스크립트 저장소 루트 validate.mjs
문서 HTML 재생성 스크립트 저장소 루트 build-docs.mjs, doc-theme.html
Claude Code 마켓플레이스 정의(정본) .claude-plugin/marketplace.json
CI(자동 검사) 설정 .github/workflows/validate.yml

이 표에 없는 폴더(예: 개발 중 생긴 로컬 캐시·메모 파일)는 .gitignore에 등록되어 저장소에 포함되지 않으며, 이 플러그인을 새로 내려받는 사용자에게는 존재하지 않는 파일이므로 이 문서에서 다루지 않습니다.


업데이트 내용 요약

날짜가 최신인 항목이 위에 오도록 정리했습니다. 항목을 클릭(또는 탭)하면 세부 내용이 펼쳐집니다.

2026-09-01 — 응답 "활성 표시" 규칙 추가: 페르소나 작동을 채팅창에서 바로 확인

hook이 매 턴 주입하는 내용은 AI 전용 채널이라 채팅창에 직접 보이지 않아, "페르소나가 정말 작동하는지 눈으로 확인하기 어렵다"는 지적을 받았습니다. persona_marker.txt(매 턴 주입, 여유가 넉넉해 하드캡 부담 없음)와 reference/persona_full_core.md(hook 실패 복구용)에 "도메인 페르소나·L2/L3·단일 관점 중 하나라도 활성되면 응답 첫 줄에 [페르소나: ...] 형식으로 짧게 표시, 평범한 대화(L0/기본 L1)엔 표시 안 함" 규칙을 추가했습니다. persona_core.md는 하드캡 여유가 678자뿐이라 의도적으로 건드리지 않았습니다. 이 규칙은 코드가 아니라 AI 지시문이라 완전한 보장은 아니며, 실제로 매번 정확히 붙는지는 새 세션 라이브 테스트가 필요합니다(test_scenarios.md에 검증 시나리오 추가).

2026-09-01 — validate.mjs 15번째 검사: 페르소나 스킬 폴더명 안전성 검증

/persona-create(새 페르소나 생성 명령)의 slug 경로 조작 방지가 실제로는 코드가 아니라 "이렇게 확인하라"는 AI 지시문 한 줄뿐이었던 것을 발견했습니다. AI가 실수로 그 지시를 놓치면 아무 것도 못 막는 구조였습니다. skills/ 아래 모든 persona-* 폴더명이 안전한 형식(persona-[a-z][a-z0-9-]*)인지 기계적으로 검사하는 15번째 항목을 추가해, 위험한 폴더명이 생기면 "완료" 상태에 절대 도달하지 못하고 CI가 다음 push 때 자동으로 잡도록 했습니다. 일부러 위험한 폴더를 만들어 FAIL이 재현되는 것과, 지운 뒤 PASS로 돌아오는 것을 직접 확인했습니다.

2026-09-01 — 버전 1.3.0: 최근 안전 수정 11건을 반영해 버전 번호 갱신

.claude-plugin/plugin.json의 버전 번호가 1.2.0으로 15개 커밋(그중 11개가 실제 결함 수정) 동안 그대로였던 것을 발견했습니다 — silent failure 수정 2건, 법률 도메인 필수 면책 문구 누락 수정, 도메인 트리거 단어 드리프트 수정, 아래의 CRLF 하드캡 리스크 수정 등이 전부 버전 번호에 반영되지 않은 채 쌓여 있었습니다. 버전 번호가 실제 변경을 반영하지 못하면 업데이트 여부를 버전으로 확인하는 설치 환경에서 이미 나온 안전 수정이 조용히 누락될 수 있어, 1.3.0으로 갱신했습니다(호환성이 깨지는 변경은 없어 minor 버전 상승).

2026-09-01 — .gitattributes 추가: hook 하드캡 감시 대상 파일의 줄바꿈 방식 고정

persona_core.md·persona_marker.txt(hook이 매 세션 그대로 주입하는 두 파일, 10,000자 하드캡 감시 대상)에 .gitattributes가 없어, 줄바꿈 방식(CRLF/LF)이 설치하는 사용자의 git 설정(core.autocrlf)에 따라 흔들릴 수 있었습니다. 자동검사(CI)는 이 변환이 일어나지 않는 환경에서 돌기 때문에, 실제로 어떤 사용자 환경에서 설치했을 때 자동검사가 보고하는 여유 공간보다 실제 여유가 더 적을 수 있는 사각지대였습니다. .gitattributes로 두 파일을 eol=lf로 고정해, 어떤 환경에서 설치하든 항상 동일한 바이트 수를 보장하도록 수정하고, 실제로 파일을 새로 받는 상황을 재현해 CRLF로 바뀌지 않음을 확인했습니다.

2026-08-31 — persona_core.md 도메인 트리거 단어 드리프트 수정 + validate.mjs 14번째 검사 추가

도메인 페르소나 스킬 파일들은 "트리거 단어의 정본은 persona_core.md"라고 스스로 선언하는데, 실제로는 persona_core.md가 persona-triggers/SKILL.md보다 트리거 단어가 적은 드리프트가 있었습니다(#13 투자자: "페이퍼 모드"·"라이브 모드" 등 2개, #11 변호사 2개, #14 회계·세무 6개, #15 마케팅 4개 누락). persona_core.md에 누락된 단어를 전부 추가하고, validate.mjs에 이 방향(코어 ↔ persona-triggers)의 드리프트를 앞으로 자동으로 잡는 14번째 검사를 추가했습니다.

2026-08-31 — hook 실패 복구 파일에 "객관적 관점 기본 적용" 규칙 이식

persona_core.md(SessionStart hook, 실제 매 세션 주입 파일)엔 있던 "15명 다관점 균형 검토 의무 + 자가 검증 의무 + 단호한 권고·한계 표현" 규칙(객관적 관점 기본 적용)이 hook 실패 시 수동 복구용 파일(reference/persona_full_core.md)엔 처음부터 빠져 있던 것을 발견해 이식했습니다. 정본과 글자 단위로 동일하게 복사하고, 같은 내용을 다르게 적어두었던 기존 한 줄(답변 형식 섹션)은 새 섹션을 가리키는 참조로 정리해 중복을 없앴습니다.

2026-08-20 ~ 2026-08-21 — 전수 재감사: silent failure 수정, hook 실패 복구 파일 동기화

전 저장소를 파일 단위로 다시 훑어 실제 결함을 찾아 고친 라운드입니다.

  • silent failure 2건 발견·수정: persona_core.md/persona_marker.txt 파일이 (a) 아예 없거나 (b) 존재하지만 비어있을 때, hook이 아무 경고 없이 조용히 빈 내용을 주입하던 문제를 발견해 수정 — 이제 두 경우 모두 눈에 보이는 한국어 경고 문구가 뜹니다.
  • hook 실패 시 수동 복구용 파일(reference/persona_full_core.md)이 방치돼 있던 것 발견·복원: 이 파일이 3일간 갱신되지 않아 도메인 전문가(투자자·변호사·회계세무·마케팅) 섹션과 면책 강제 규정이 통째로 빠져 있었음 — 정본과 동일하게 복원. 이어서 트리거 단어 목록(트리밍 이전 구버전이던 것)과 안티패턴 회피 섹션(아예 없었던 것)도 최신본과 동기화.
  • persona-lawyer 면책 방어선 보강: persona-accountant엔 있던 "필수 면책" 전용 안내 박스가 persona-lawyer엔 없어 같은 형식으로 추가.
  • test_scenarios.md의 결함 재세팅 절차 오류 수정: 이미 개명된 지 오래된 옛 파일명 5개를 가리키고 있던 것을 현재 실제 경로로 교체.
  • 트리거 단어 57개 정리: 도구/작업 관련 트리거 중 지나치게 일상적인 단어(예: "실행", "다음", "모두")를 제거해 오작동(과잉 반응) 위험을 낮추고, hook 출력 여유 공간을 확보(9,952자→9,399자, 여유 601자).
  • 트리거 다이어트를 더 진행할지 여부는 "보류"로 최종 확정: 8개 실사용 시나리오를 검증한 결과 트리거 과다로 인한 실제 오류 사례가 없어, 근거가 쌓이기 전까지 추가 축소는 하지 않기로 결정.
2026-08-19 — "간단히 개선해줘"류 요청의 작업범위 제약, hook 출력 하드캡 발견·대응
  • 실제 회귀 사례 기반 수정: "간단히 개선해줘" 같은 요청이 답변 분량만 줄일 뿐 실제 작업 범위(파일 탐색·수정 개수)는 전혀 제약하지 않아, 실사용 중 13분간 여러 파일을 건드리는 사고가 발생 — 분량뿐 아니라 작업 범위도 최소 단위로 제한하는 규칙을 추가.
  • hook 출력 10,000자 하드캡 발견: Claude Code 공식 문서를 확인해 hook이 내보내는 텍스트가 10,000자를 넘으면 초과분이 조용히 잘려나간다는 사실을 확인 — persona_core.md가 당시 9,952자(여유 48자뿐)였던 것을 실측으로 발견. validate.mjs에 13번째 검사(하드캡 근접 경고)를 추가해 재발을 자동으로 감시하도록 함.
  • 죽은 설정이던 additionalContextLimit 필드를 hooks.json에서 제거(Claude Code 공식 스키마에 없는 값으로 확인됨).
  • validate.mjs에 12번째 검사 추가 — 도메인 skill(회계세무·마케팅 등)의 자체 트리거 단어 목록이 정본과 어긋나는 것을 자동 감지.
  • plugins/sodam-persona/.claude-plugin/plugin.json에 license·repository 메타데이터 필드 보완.
2026-08-18 — hooks.json 변수 오류 재발 방지 검사 추가
  • validate.mjs에 11번째 검사 추가 — hooks.json이 Claude Code 변수(${CLAUDE_PLUGIN_ROOT}) 대신 다른 변수명을 잘못 쓰거나, 참조하는 hook 스크립트 파일이 실제로 없으면 자동으로 잡아냄.
2026-08-17 — Claude Code 전용으로 원상복귀
  • Codex는 별도 저장소에서 독립적으로 관리하기로 결정 — 이 저장소는 다시 Claude Code 전용 플러그인으로 확정.
  • .codex-plugin/plugin.json, .agents/plugins/marketplace.json 등 Codex 전용 파일 제거.
  • 치명적 버그 수정: Codex 이식 과정에서 hooks.json의 Claude Code 변수 ${CLAUDE_PLUGIN_ROOT}가 Codex 관례인 ${PLUGIN_ROOT}로 잘못 바뀌어 있었음 — 이 상태로는 Claude Code에서 hook 자체가 실행되지 않는 상태였음. 원래 변수명으로 복원.
  • README·명령어 표기를 Claude Code 실제 명령 체계(/plugin marketplace add, /plugin install, /reload-plugins 등, 공식 문서 기준 검증)로 전면 갱신.
2026-08-09 — Codex 마켓플레이스 정식 패키징 (2026-08-17 원상복귀로 제거됨)
  • .agents/plugins/marketplace.json 신설 — Codex가 실제로 읽는 마켓플레이스 정의를 정식으로 분리.
  • 플러그인 버전 1.1.1로 갱신.
2026-08-04 — 문서 신뢰성 강화 (깨진 링크·개인 경로 노출 차단)
  • 이미 폐지된 GUIDE.md/GUIDE.en.md 문서를 가리키던 죽은 참조 2곳 제거.
  • persona-triggers/SKILL.md에 실수로 남아 있던 실제 개인 컴퓨터 경로 노출 제거.
  • validate.mjs에 검사 2종 신설: "문서 안 파일 참조가 실제로 존재하는가"(9번), "개인 절대경로가 노출되지 않았는가"(10번). 이후로는 같은 실수가 반복되면 CI가 자동으로 잡아냅니다.
2026-07-27 — 새 페르소나를 인터뷰로 직접 만들고 편집하는 기능 추가
  • persona-create, persona-edit 인터뷰형 skill 신설 — 코드를 몰라도 대화로 새 도메인 전문가를 추가하거나 기존 트리거 단어를 고칠 수 있게 됨.
  • 새 페르소나 이름(영문 슬러그) 입력값 검증 추가 — 잘못된 형식이 파일 경로에 그대로 쓰이는 것을 방지(경로 조작 위험 차단).
  • 기존에 별도 문서였던 "초보자 가이드(GUIDE)"를 폐지하고 이 README 한 곳으로 통합.
2026-07-26 — 문서 도구화, 안정성 보강
  • README.md/README.en.md를 고치면 README.html/README.en.html을 똑같이 재생성해주는 build-docs.mjs 스크립트 신설.
  • hook이 필요한 파일을 못 찾았을 때 프로그램이 거칠게 멈추는 대신, 조용히 정상 종료하도록 완화.
2026-07-11 — 대규모 정비: 관점 확장, 자동 검사 도입, 라이선스 확정

이 프로젝트에서 가장 큰 변화가 몰린 날입니다.

  • 관점 수를 13에서 14로(회계·세무 전문가 신설), 다시 15명으로(마케팅·세일즈 전문가 신설) 확장.
  • 회계·세무(#14)·법률(#11) 도메인에 고빈도 트리거 단어를 대폭 확충.
  • 기존 관점 5개에 트리거 단어를 보강(관점 수 자체는 변경 없음).
  • validate.mjs 정합성 검사기 최초 도입 + GitHub Actions(CI) 자동 실행 연동.
  • 회계·세무·법률 답변에 면책 문구가 누락되는 것을 실제 라이브 테스트에서 발견 → "항상 켜짐" 규칙으로 강제 격상.
  • 저장소 안에 남아 있던 개발자의 실제 컴퓨터 경로 노출 제거.
  • Apache License 2.0 라이선스와 NOTICE 파일 최초 추가(저작권자: SoDam AI Studio).
  • 한국어/영어 README·GUIDE 문서를 공개 배포용으로 전면 개편(설치법·아키텍처·보안 데이터 흐름·라이선스·상표 안내 추가).
  • 프로젝트 이름을 persona-plugin에서 sodam-persona로 통일.
  • 배포 대상이 아닌 내부 백로그 문서 4개를 .gitignore로 제외.
2026-06-17 ~ 2026-06-20 — 비가역 작업 게이트, 자가 검증 게이트 추가
  • 배포·삭제·마이그레이션·머지·릴리스 같은 되돌릴 수 없는 작업을 감지해 자동 실행을 막고 사전 확인을 강제하는 트리거 패턴(R) 신설.
  • "완료라고 말하기 전에 실제 검증(실행·테스트·빌드)을 거쳤는가"를 확인하는 자가 검증 완료 게이트 추가.
2026-06-16 — 프로젝트 시작 (Claude Code 플러그인으로 최초 공개)
  • 페르소나 v5를 Claude Code(당시 대상 플랫폼)용 플러그인 형태로 최초 패키징.
  • 초보자용 상세 README와 GUIDE 문서 최초 작성.
  • 근거·출처·증거를 요구하는 트리거 단어 29개(Q 패턴) 추가 — 추측을 사실처럼 말하지 않도록 하는 규율의 시작점.

이후 이 프로젝트는 Codex 전용으로 이식되어 지금의 SoDam Persona for Codex가 되었습니다.


문제와 오류 대처 방법

증상 원인 해결 방법
/plugin marketplace add . 실행 시 실패 저장소 루트 폴더가 아닌 다른 위치에서 실행했거나, .claude-plugin/marketplace.json이 없음 저장소를 내려받은 폴더로 이동한 뒤(README.md가 보이는 위치) 다시 실행
재설치하려는데 "Marketplace not found" 오류 uninstall을 update보다 먼저 실행해서 마켓플레이스 등록 자체가 사라짐 반드시 update → uninstall → install 순서를 지킬 것. 순서를 바꾸면 이 오류가 재현됩니다
설치는 됐는데 페르소나가 전혀 활성화 안 되는 느낌 신뢰 확인을 놓쳤거나, 설치 후 /reload-plugins를 안 함 /plugin list로 설치 확인 → /reload-plugins 실행 → 그래도 안 되면 새 세션 시작
플러그인 코드를 고쳤는데 실제 대화에 반영이 안 됨 설치 캐시는 파일을 고친다고 자동으로 갱신되지 않음 /plugin marketplace update sodam-persona → /plugin uninstall sodam-persona@sodam-persona → /plugin install sodam-persona@sodam-persona → /reload-plugins 순서로 재설치
터미널에 node를 입력했더니 "인식할 수 없는 명령"이라고 나옴 Node.js가 설치되지 않았거나, 설치 후 터미널을 새로 열지 않음 nodejs.org에서 설치 후 열려 있던 터미널을 모두 닫고 새로 열기
node build-docs.mjs 실행 시 "pandoc이 설치되어 있지 않습니다" Pandoc 미설치 문서를 직접 고칠 사람만 필요. 플러그인을 그냥 "쓰기"만 한다면 이 오류는 무시해도 됨. 고치려면 pandoc.org/installing.html에서 설치
/plugin marketplace add sodam-ai/SoDam-Persona 실행 시 네트워크 오류 Git 미설치, 저장소 이름 오탈자, 방화벽/프록시 차단 git --version으로 Git 설치 확인 → 저장소 이름 철자 재확인 → 회사·학교망이라면 프록시 설정 확인
플러그인 skill 이름을 쳤는데 안 뜸 설치 캐시가 오래돼 폴더 구조가 달라졌을 가능성 rm -rf ~/.claude/plugins/cache 후 Claude Code 재시작 → 위 재설치 순서 다시 진행
node validate.mjs 실행 결과가 ❌ FAIL 관점 수·트리거 수·스킬 수 등 어딘가 숫자가 어긋남(주로 새 페르소나 추가/편집 도중) 출력된 오류 목록을 한 줄씩 읽고, 표시된 파일을 직접 열어 숫자를 맞춘 뒤 다시 실행. 아키텍처의 "15가지 검사표"에서 각 번호의 의미를 확인
회계·세무 또는 법률 답변에 면책 문구가 안 보임 예상된 동작이 아닌 실제 결함일 가능성이 높음 저장소의 GitHub Issue로 신고 권장. validate.mjs 검사 7번이 이런 회귀를 막기 위한 장치이므로, 최신 버전인지도 함께 확인
Windows PowerShell에서 명령을 입력했더니 경로 관련 오류 따옴표·백슬래시가 사람이 옮겨 적는 과정에서 바뀜 이 문서의 코드 블록을 그대로 복사해서 붙여넣기(직접 타이핑하지 말 것)
세션이 길어진 뒤 페르소나가 흐트러진 느낌 정상적인 현상 — 매 입력마다 마커가 다시 주입되어 자동 복구되도록 설계됨 특별한 조치 불필요. 그래도 이상하면 새 task로 세션을 새로 시작

자주 묻는 질문 (FAQ)

Q. 이 플러그인은 무료인가요? A. 네. Apache License 2.0으로 공개된 무료 오픈소스이며, 개인·상업적 용도 모두 사용할 수 있습니다. 자세한 조건은 법률, 저작권, 라이선스, 상업적 용도를 확인하세요.

Q. 제 컴퓨터 파일을 마음대로 지우거나 고치나요? A. 아니요. 이 플러그인의 hook은 플러그인 폴더 안 고정된 텍스트 파일 2개를 읽는 것 외에는 아무 파일도 쓰거나 지우지 않습니다. 삭제·배포처럼 되돌릴 수 없는 작업은 항상 사용자에게 먼저 확인을 구하도록 설계되어 있습니다. 자세히는 보안과 데이터 흐름 참고.

Q. 인터넷 연결이 꼭 필요한가요? A. Claude Code 자체가 AI 모델과 통신하기 위해 인터넷이 필요합니다. 다만 이 플러그인의 hook 자체는 로컬 파일만 읽을 뿐 별도로 인터넷에 접속하지 않습니다.

Q. 회계·세무나 법률 답변을 실제 전문가 상담 대신 써도 되나요? A. 아니요. 이 페르소나는 실제 자격을 갖춘 세무사·회계사·변호사가 아닙니다. 참고용 정보 제공이 목적이며, 실행성 있는 판단(신고·계약 해석 등) 전에는 반드시 실제 전문가의 확인을 받아야 합니다. 답변에도 이 점이 면책 문구로 항상 함께 표시됩니다.

Q. Codex에서도 쓸 수 있나요? A. 아니요. Codex 지원은 별도 저장소에서 독립적으로 관리되고 있으며, 이 저장소는 Claude Code 전용으로 관리됩니다. Codex를 쓰신다면 별도 저장소를 확인해 주세요.

Q. 여러 대의 컴퓨터에 설치해도 되나요? A. 네. 이 플러그인은 자기완결적으로 설계되어 별도 개인 설정 파일이나 메모리 없이도, 새 컴퓨터에서 설치만 하면 동일하게 동작합니다.

Q. 트리거 단어를 제가 원하는 대로 추가하거나 바꾸고 싶어요. A. /sodam-persona:persona-edit(기존 관점 편집) 또는 /sodam-persona:persona-create(완전히 새로운 전문 분야 추가)를 호출해 인터뷰 형식으로 진행하면 됩니다. 사용 방법과 워크플로우 참고.

Q. 페르소나가 대답을 너무 길게/무겁게 해요. A. "간단히", "짧게", "핵심만" 같은 단어를 말에 섞으면 그 즉시 짧은 형식으로 전환됩니다. 이 규칙은 다른 모든 규칙보다 우선순위가 가장 높습니다.

Q. 반대로 훨씬 더 깊고 꼼꼼하게 봐주면 좋겠어요. A. "객관적으로", "깊게", "철저히", "페르소나 풀버전" 같은 표현을 사용하면 15명 관점 전원이 검토에 들어갑니다.

Q. 오작동이나 버그를 발견했어요. 어디에 알리면 되나요? A. 저장소의 GitHub Issue 기능으로 신고해 주세요. 재현 가능한 발화 예시를 함께 적어주시면 원인 파악이 빨라집니다.

Q. 이 플러그인의 코드를 가져다 제 상업용 제품에 넣어도 되나요? A. 네, Apache License 2.0이 이를 명시적으로 허용합니다. 다만 라이선스·저작권 고지 사본 포함, 수정한 파일에 변경 사실 명시 같은 몇 가지 조건이 있습니다. 법률, 저작권, 라이선스, 상업적 용도에서 조건을 확인하세요. 이 안내는 참고용 요약이며 법률 자문이 아닙니다.

Q. 이 플러그인은 Anthropic이 만든 공식 기능인가요? A. 아니요. 이 프로젝트는 Anthropic과 아무런 제휴·후원 관계가 없는 독립적인 커뮤니티 플러그인입니다. "Claude"와 "Claude Code"는 각 소유자의 상표이며, 이 문서에서는 그 제품을 가리키기 위한 목적으로만 이름을 사용했습니다.

Q. 세션이 오래돼서 대화가 정리(compaction)되거나 서브에이전트를 거치면 페르소나가 사라지나요? A. 아니요. UserPromptSubmit hook이 매 입력마다 압축된 마커를 다시 주입하도록 설계되어 있어, 그런 상황에서도 페르소나가 자동으로 복구됩니다.


법률, 저작권, 라이선스, 상업적 용도

아래 내용은 이해를 돕기 위한 요약입니다. 법률 자문이 아니며, 법적 효력을 갖는 원문은 저장소의 LICENSE와 NOTICE 파일입니다. 상업적으로 재배포하거나 법적 판단이 필요한 상황이라면 독립적인 법률 검토를 받으시길 권장합니다(이는 NOTICE 파일에 명시된 안내이기도 합니다).

라이선스: Apache License 2.0

  • 저작권자: Copyright 2026 SoDam AI Studio
  • 원문 위치: 저장소 루트 LICENSE 파일

Apache License 2.0은 아래 4가지를 명시적으로 허용합니다.

허용 사항 의미
상업적 이용 이 코드를 회사·개인 사업에 그대로 쓰거나 판매하는 제품에 포함해도 됩니다
수정 코드를 자유롭게 고칠 수 있습니다
배포 원본 그대로든 수정한 형태든 다른 사람에게 다시 배포할 수 있습니다
특허 사용 기여자가 보유한 관련 특허권도 함께 사용할 수 있는 라이선스가 부여됩니다

대신 아래 조건을 반드시 지켜야 합니다.

조건 의미
라이선스 사본 포함 이 코드(또는 그 일부)를 다시 배포할 때 Apache License 2.0 전문 사본을 함께 제공해야 합니다
변경 사항 명시 원본을 수정했다면, 수정한 파일에 "변경했다"는 사실을 눈에 띄게 표시해야 합니다
저작권·특허·상표 고지 유지 원본 소스에 있던 저작권·특허·귀속 고지를 삭제하지 않고 유지해야 합니다
NOTICE 파일 사본 포함 원본에 NOTICE 파일이 있으므로, 재배포 시 그 안의 고지 내용을 함께 전달해야 합니다(재배포물의 NOTICE 파일, 문서, 또는 화면 출력 중 한 곳에)

그리고 아래는 보장되지 않는다는 점을 분명히 알려드립니다(원문 제7·8조 요약).

  • 이 소프트웨어는 "있는 그대로(AS IS)" 제공되며, 상품성이나 특정 목적 적합성을 포함해 어떠한 형태의 보증도 하지 않습니다.
  • 이 소프트웨어의 사용으로 발생하는 어떠한 손해(영업 손실, 작업 중단, 컴퓨터 고장 등 포함)에 대해서도 저작권자와 기여자는 책임지지 않습니다.
  • 사용 및 재배포의 적합성을 판단하고 그에 따른 위험을 부담하는 것은 전적으로 사용자의 책임입니다.

저작권 및 제3자 인용 (NOTICE 파일 요약)

  • 이 프로젝트는 아래 개념을 짧은 인용구 형태로만 참조하며, 해당 개념을 자신의 언어로 다시 구현했을 뿐 제3자의 소스 코드를 포함하거나 재배포하지 않습니다.
    • "Chesterton's Fence"(체스터턴의 울타리) — G. K. Chesterton에게 귀속되는 개념
    • "Hyrum's Law"(하이럼의 법칙) — Hyrum Wright에게 귀속되는 격언
    • Goal-Driven Execution(목표 지향 실행) — Andrej Karpathy에게 귀속되는 짧은 문구

상표 고지

이 문서와 프로젝트에서 언급하는 "Claude", "Claude Code", "Anthropic", "Codex", "OpenAI", "GitHub", "Node.js" 등의 제품·회사명은 각 소유자의 상표 또는 등록상표입니다. 이 프로젝트는 이들 중 어느 누구와도 제휴·후원·승인 관계가 없는 독립적인 프로젝트이며, 위 이름들은 오직 해당 제품을 가리키기 위한 목적으로만(명목적 사용) 사용되었습니다.

도메인 전문가 페르소나에 대한 중요한 법적 고지

이 플러그인의 전문 투자자(#13)·전문 변호사(#11)·회계·세무 전문가(#14)·마케팅·세일즈 전문가(#15) 페르소나는 실제 자격을 갖춘 전문가가 아니라 Claude Code의 AI 응답 스타일을 조정하는 소프트웨어 설정입니다.

  • 투자·거래 관련 응답은 투자 자문이 아니며, 실제 투자 결정과 그 결과에 대한 책임은 전적으로 사용자에게 있습니다.
  • 법률 관련 응답은 법률 자문이 아니며, 실제 법적 효력을 보장하지 않습니다. 계약·규제·컴플라이언스 판단 전에는 변호사의 확인을 받아야 합니다.
  • 회계·세무 관련 응답은 일반 정보 제공용이며, 실제 신고·납부 전에는 반드시 세무사·회계사의 최종 확인을 받아야 합니다.
  • 마케팅 관련 응답에서 과장·허위 광고에 해당할 수 있는 표현은 걸러내려 하지만, 실제 배포 전 표시·광고 관련 법규 준수 여부는 사용자가 직접 검토해야 합니다.

AI가 생성한 콘텐츠(코드·문서 등)를 사용할 때 주의할 점

  • 이 플러그인은 Claude Code의 응답 스타일을 조정할 뿐, Claude Code가 실제로 만들어내는 코드·문서·설명 등 AI 생성물의 저작권 상태를 보장하거나 대신 판단해주지 않습니다.
  • AI가 생성한 결과물을 상업적 제품·서비스·납품물에 포함하기 전에는 아래를 사용자가 직접 확인해야 합니다.
    • 그 결과물이 기존 저작물과 실질적으로 유사하지 않은지(저작권 침해 가능성)
    • 사용한 AI 서비스(Claude Code/Anthropic 등)의 이용약관이 그 결과물의 상업적 이용을 허용하는지
    • 결과물이 참조했을 수 있는 오픈소스 코드의 라이선스 조건과 충돌하지 않는지
  • 이 플러그인의 규칙 문서 자체도 AI 코딩 도구를 이용한 반복 작업 과정에서 작성·정리되었습니다. 라이선스(Apache License 2.0)의 효력에는 영향이 없지만 참고로 밝혀둡니다.

외부 서비스, API 요금제, 모델 이용 정책은 별도로 확인해야 합니다

이 플러그인은 Claude Code라는 외부 플랫폼 위에서 동작하는 설정 모음일 뿐이며, Claude Code/Anthropic의 요금제·모델 이용 정책·서비스 약관을 대신 안내하거나 보장하지 않습니다. 아래 항목은 이 문서가 아니라 해당 서비스의 공식 채널에서 직접 확인하세요.

  • Claude Code/Anthropic의 요금제와 사용량 제한
  • 모델 사용 정책(허용/금지되는 사용 사례)
  • Claude Code/Anthropic의 서비스 약관 및 개인정보처리방침
  • 상업적 서비스에서 Claude 응답을 재판매·재사용할 때 별도 조건이 있는지 여부

점검 완료: 이미지·폰트·외부 의존성 라이선스 충돌 없음

이 저장소를 코드·문서 전체 기준으로 점검한 결과(2026-08-09 기준)입니다.

점검 항목 결과
package.json, package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, pyproject.toml, Cargo.toml, go.mod 등 의존성 파일 저장소 전체에서 0건 확인 — 외부 라이브러리 의존성이 없어 서드파티 라이선스 충돌 위험 자체가 없음
이미지·아이콘·폰트·영상·음원 파일(png, svg, ico, woff, ttf, mp4, mp3 등) 저장소 전체에서 0건 확인
assets, public, static, samples, examples, fixtures 폴더 저장소 전체에서 0건 확인
hook 스크립트(inject-core.js, inject-marker.js)의 외부 패키지 사용 여부 Node.js 내장 모듈만 사용, 외부 패키지 import/require 0건

즉 이 플러그인은 코드·문서 텍스트만으로 이루어져 있어, 이미지·폰트·서드파티 패키지 라이선스로 인한 상업적 사용 제약이 현재 시점에는 존재하지 않습니다. 다만 이후 이미지·의존성이 추가되면 이 표는 다시 점검이 필요합니다.

상업적 용도 요약

왕초보를 위한 한 줄 정리: 그대로 쓰기·고쳐 쓰기·복제(포크)·재배포·판매·서비스 운영·교육 자료 활용·고객사 납품까지 전부 가능합니다. 다만 "SoDam" 브랜드 자체를 내 것처럼 사칭하는 것만은 안 됩니다.

하고 싶은 것 가능 여부 조건
이 플러그인을 회사·개인 업무에 그대로 사용 가능 조건 없음
복제하거나 GitHub에서 포크(fork)해서 내 계정에 두기 가능 조건 없음(다른 사람에게 재배포할 때는 아래 "조건" 준수)
이 플러그인을 수정해서 내 상업 제품/서비스에 포함 가능 위 "조건" 표(라이선스 사본·변경 명시·고지 유지) 준수
이 코드를 다시 패키징해서 유료로 재배포 가능 위와 동일. Apache License 2.0은 재배포 자체에 요금을 매기는 것을 금지하지 않습니다
이 플러그인을 기반으로 한 서비스를 운영(SaaS 등) 가능 위 "조건" 표 준수. 서비스가 실제 투자·법률·세무 자문으로 오인되지 않도록, 위 "도메인 전문가 페르소나에 대한 중요한 법적 고지" 내용을 서비스 이용자에게도 안내하는 것을 권장
교육 자료(강의·튜토리얼·사내 교육)로 활용 가능 조건 없음(자료를 재배포 형태로 나눠준다면 위 "조건" 표 준수)
회사/고객사에 납품하는 산출물에 포함 가능 위 "조건" 표 준수. 고객사에도 라이선스 사본과 NOTICE 고지가 함께 전달되어야 함
"SoDam", "sodam-ai" 브랜드명을 그대로 써서 내 제품인 것처럼 배포 권장하지 않음 라이선스는 코드 사용권이지 상표 사용권이 아닙니다(원문 제6조). 브랜드 원본 출처를 명확히 구분해 표기하세요

하면 안 되는 것 (요약)

  • "SoDam"·"sodam-ai" 브랜드명을 자신이 만든 것처럼 사칭해 배포하는 것
  • 라이선스 사본과 NOTICE 고지 없이 수정본을 재배포하는 것
  • 회계·세무·법률·투자 도메인 페르소나의 답변만 믿고, 실제 전문가 확인 없이 신고·계약·투자 결정을 내리는 것
  • Claude Code가 생성한 결과물에 포함될 수 있는 제3자 저작물을, 출처 확인 없이 그대로 상업적으로 재사용하는 것

궁금한 개별 상황이 있다면 저장소의 LICENSE·NOTICE 원문을 직접 확인하시고, 확신이 서지 않는 상업적 재배포 건은 변호사와 상의하시길 권장합니다.

About

Claude Code에 '15명 전문가 관점 + 자동 트리거' AI 개발 파트너 페르소나를 입히는 플러그인. 항상켜짐 hook + 조건부 skill + 인터뷰형 생성/편집 명령어, 세무·법률 면책 자동, 새 PC 이식형. Apache-2.0.

Topics

Resources

Stars

17 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages