portfolio-kup은(는) 무엇을 하나요?
실제 증거를 바탕으로 사용자의 프로필을 생성하고, 이를 한국어/영문 이중 언어 원페이지 웹 페이지로 만듭니다. 사용자에게는 한국어로 응답하며, 기술 용어는 영어를 유지합니다.
절차
순서대로 진행하십시오. · 사용자가 결정해야 하는 모든 질문은 AskUserQuestion을 사용하십시오. · 정보가 많은 내용은 채팅에서 먼저 요약한 후 페이지에 반영하십시오.
1. 데이터 수집
- Claude Code를 사용하는 다른 머신이 있는지 물어보십시오 (ssh
user@host). · 사용자가 이미 요청에 포함시켰다면 묻지 않아도 됩니다. - 모든 머신에서 다음 스크립트를 실행하십시오 (숫자만 출력하며, 프롬프트 메시지나 키는 출력하지 않음):
S=~/.claude/skills/portfolio-kup/scripts; D=<scratchpad>/pk; mkdir -p $D python3 $S/collect.py > $D/local.json ssh -o BatchMode=yes user@host python3 - < $S/collect.py > $D/host1.json python3 $S/merge.py $D/*.json > $D/metrics.json # 요약 테이블은 stderr로 출력 - 프롬프트 내용 자체를 읽어 질적 평가를 수행하십시오 (
~/.claude/history.jsonl필드display,project). 모든 프로젝트/월에 걸쳐 분산하여 무작위로 읽으십시오. · 발견된 key/token/비밀번호를 답변이나 웹 페이지에 복사하지 말고 개수만 세십시오.
사용자에게 알려야 할 제한 사항:
history.jsonl은 사용자가 직접 입력한 시점만 집계합니다. · 에이전트가 오랫동안 작업한 기간은 집계되지 않습니다.- transcript (
~/.claude/projects/**/*.jsonl)는cleanupPeriodDays(기본값 30일)가 지나면 삭제됩니다. · 따라서 토큰과 AI 작업 시간은 최근 기간만 포함됩니다. - 프롬프트 수가 100개 미만인 월 (
enough_data: false)은 변동이 심하므로 비교에 사용하지 마십시오. - 행동 집계는 키워드 기반이며, 경향을 알려주는 용도이지 정확한 측정이 아닙니다.
2. 평가 (채팅에서 응답)
- 예상 직업 · 수준 (Junior / Mid / Senior) · 강점, 약점 및 근거
- 솔직하게 평가하고, 과장된 칭찬은 하지 마십시오. "AI를 잘 다뤄서 결과물을 낸 것"과 "스스로 기본 원리를 이해한 것"을 구분하십시오.
- 기록에서 key/secret을 발견하면 → 즉시 교체하도록 경고하십시오 (종류는 알리되, 값은 알리지 마십시오).
3. 테스트 (사용자가 자신의 실력을 확인하고 싶어할 경우)
- 각각 4문제씩 2회,
AskUserQuestion을 통해 진행하십시오. · 사용자의 실제 업무(사용하는 스택)에서 가져온 상황을 바탕으로 한 문제를 출제하십시오. - 2가지 유형을 혼합하십시오: 증상을 보고 원인 찾기와 내부 메커니즘 설명하기. · 선택지 길이는 균일하게 유지하고, 정답을 암시하지 마십시오.
- 규칙을 알리십시오: AI에게 묻지 말 것 · 모르면 "모른다"고 답할 것
- 각 문제에 대한 짧은 해설과 함께 정답을 공개하고, 유형별 결과를 요약하십시오 (예: 증상 4/4, 메커니즘 0/4).
4. 연봉 및 커리어 방향
WebSearch를extended모드로 사용하여 여러 검색어를 동시에 검색하십시오 (한국어 + 영어, 현재 연도 기준). · 매번 출처(Sources)를 포함시키십시오.- AI/ML 엔지니어 (모델 개발)와 AI 애플리케이션 엔지니어 (앱에 AI 활용)를 구분하십시오. · 연봉 수준이 크게 다릅니다.
- 폭넓게 고려하십시오: 기술 + 성격 + 성장에 부합하는 8~10개 직업 (기술 직군 외에도 컨설턴트, 프리세일즈, 교육자, EdTech 제품, 프리랜서 등)을 나열한 후, 가장 적합한 3개 직군 + 최대 5개의 부차적 직업을 선정하십시오. "아직 적합하지 않은" 직업은 채팅에서 언급할 수 있지만, 페이지에는 넣지 마십시오.
- 명확한 하나의 추천 (인터뷰 목표 기반)과 함께 3단계 계획을 제시하십시오.
- 웹 페이지에서 연봉은
*로 표시하고, 사용자가 요청할 때만 실제 숫자를 입력하십시오.
5. 인터뷰
grilling (또는 grill-me) 스킬을 호출하여, AskUserQuestion을 통해 여러 라운드에 걸쳐 질문하십시오:
해당 직군을 선택한 이유 · 채팅 외에서의 사람/고객 경험 · 시간적 여유 · 보유 중인 프로젝트 (개인 또는 회사) ·
주당 여유 시간 · 성공의 정의 · 계속/중단 기준
- 서로 모순되거나 질문에 답하지 않는 답변 → 재질문
- 발견된 패턴을 직접 지적하십시오 (예: 선택을 강요하지 않으면 "다 받겠다"고 답하는 경우). · 동의하지 않는 부분이 있으면 말하되, 사용자가 결정하도록 하십시오.
- 상호 이해를 바탕으로 한 요약으로 마무리하고, 사용자가 확인한 후에만 페이지에 반영하십시오.
6. 웹 페이지 만들기
templates/onepage.html을 스크래치패드로 복사하고,<script id="profile">내의 JSON만 수정하십시오. · 모든 텍스트는{"th":…,"en":…}형식입니다.- 처음에
Artifact→quickstart(의도other)로 생성한 후 게시(publish)하십시오. · iconprofile - 피드백에 따라 동일 파일(동일 URL)을 수정하고 다시 게시하십시오.
디자인 규칙 (실제 사용자 피드백 기반 · 위반 금지)
| 항목 | 수행 | 금지 |
|---|---|---|
| 페이지 구조 | 단일 컬럼 위에서 아래로 · 자기소개 → 01 기술 → 02 작업 방식 → 03 성장 → 04 커리어 방향 · 최대 1600px까지 너비 확장 | 사이드바 · 다른 패널과 다른 어두운 색상 · 고정된 좁은 너비 |
| 커리어 방향 (04) | "추천" 상자 1개 + 이유 1문장 + 3단계 계획 · 3개 직군 카드: 준비도 / 적합 이유 / 보강 필요 사항 · 선택된 카드 오른쪽 상단 ★ 추천 배지 · "함께 할 수 있는" 한 줄 배지 · "지금 무엇을 할까" 최대 4개 항목 | 긴 직업 테이블 · 카드 내 단계/첫 단계/연봉 배지 · 3단계 계획과 중복되는 정보 (사용자가 "복잡하다"고 피드백) |
| 색상 | 모든 패널 동일 색상 구성 (흰색 배경, 얇은 테두리) · 파랑 = 부드러움/긍정 · 금색 = 어려움/목표 · 빨강 = 주의 필요/현재 상태 | 여러 톤 혼합 |
| 데이터 출처 경고 | 최상단 상자: 모든 데이터 출처 + 집계되지 않은 항목 + "AI 평가이며, 인증이 아님"을 명시 | 페이지 하단에 출처 숨김 |
| 언어 | 한국어 기본 + 한국어/영문 전환 버튼 · 영어에서는 they/them 사용 또는 대명사 회피 | 이름으로 성별 추측 |
| 외부인이 이해 가능 | 쉬운 언어 사용 · "절반", "두 배", "3분의 1"과 같은 비교 사용 | 내부 프로젝트명 · 인터뷰 문항 번호 (Q20) · 단위 없는 원시 숫자 ("43회", 프롬프트 개수) · 전문 용어 그대로 ("502 Traefik") |
| 기술 | 레이더 차트 + 3단계 배지 (강점/중간/보강 필요) · 소프트/하드 스킬 나란히 배치, 항목 번호 01– 및 증거 배지 · 하드 스킬에는 도구 이름 포함 | 성격 옆 게이지/수평 막대 (사용자가 "가득 찬 것이 무엇을 의미하는지 모르겠다"고 피드백) · 카드 높이 불일치 |
| 성격 | HR에서 사용하는 소프트 스킬로 명명 · 하나의 페르소나(가상의 이름) + 한 문장 설명 · 양극단 스타일 막대 · "주의해야 할 성격" 은 별도 상자 | 페이지 내 테스트 결과 패널 (사용자가 제거 요청) |
| 작업 시간 | 시간 그래프 06:00부터 시작 · 요일별 작업량 비율(%) + % 설명 라인 | 횟수 축 |
| 성장 | 계단식, 한 번에 한 단계씩 클릭 · 높이 = 역량 수준 (막대에 수준 이름 표시) · "▼ 현재 이 단계" 표시 · 각 단계: 할 수 있는 것 / 여전히 실수하는 것 / 전환점 · "이전 단계와 비교"는 데이터가 충분한 월만 표시 · token은 transcript가 있는 단계만 표시 · 마지막 단계는 목표 (금색 점선) | 월별 프롬프트 수 그래프 (사용자가 "읽기 어렵다"고 피드백) · 모든 단계 세부 정보를 한 번에 표시 |
| 연봉 | * + 경고 상자 및 페이지 하단 설명 | 요청 없이 실제 연봉 숫자 표시 |
| 개인정보 보호 | key, IP, 호스트명, 이메일 없음 · 부정적 수치는 모호하게 표현 ("키를 부적절한 곳에 입력한 적 있음") · 실제 프로필 페이지를 공개(publish/push)하기 전에 사용자에게 허가 요청 |
스킬 파일
scripts/collect.py· 단일 머신의 숫자 데이터 수집 (월별 프롬프트, 행동, 시간/요일, 토큰, 타임스탬프) · 메시지를 출력하지 않음scripts/merge.py· 여러 머신 데이터 병합 →metrics.json(월별 데이터,enough_data, 06:00 기준 시간 비율, 요일 비율, 직접 작업 시간 vs AI 작업 시간, 토큰)templates/onepage.html· 단일 JSON 데이터로 렌더링되는 웹 페이지 · 파일 내 데이터는 가상의 예시입니다.
metrics → 페이지 콘텐츠 매핑
| metrics.json | 사용 위치 |
|---|---|
hours_pct_from_6am[].pct | hoursPctFrom6am (24개 값, 06:00부터 순서대로) |
weekday_pct | weekdayPct |
late_night_pct | hoursNote (예: "거의 3분의 1의 작업이 오후 9시 이후에 발생") |
monthly[*] 중 enough_data | stages[i].compare.items (이전 단계와 비교) · stages[i].peak/hot 가장 바빴던 달 |
tokens[*] | stages[i].tokens (데이터가 있는 달만) · cache read 비율 포함 |
hands_on_hours / ai_working_hours | 채팅에서 요약: "직접 작업 ~X시간/주 · AI가 작업 ~Y시간/주" |
secrets_pasted > 0 | 채팅 경고 + "주의해야 할 성격" + acts 첫 번째 항목 |
템플릿 내 04 섹션 JSON 구조
rec·title,reason,phases[](when,t,d) 3단계 추천paths[]· 3개 직군:tag,title,ready(0–100),fits,gap,pick: true(추천 직군),gold: true(창업/founder 직군)also[]· 부차적 직업명 ≤5개 (텍스트만)acts[]· ≤4개 항목 (t,d)