Communitygithub.com

Neckkup/portfolio-kup

Claude Code 사용 이력(로컬 및 SSH 원격)과 테스트 및 인터뷰를 기반으로 사용자의 역량, 성격, 성장 과정, 적합한 커리어 방향을 보여주는 원페이지 프로필을 생성합니다.

portfolio-kup란 무엇인가요?

이 스킬은 사용자의 Claude Code 사용 이력을 분석하여 역량, 성격, 성장 과정, 적합한 커리어 방향을 보여주는 원페이지(한 페이지) 프로필을 만듭니다. 로컬 머신과 SSH로 접근 가능한 원격 머신의 데이터를 수집하고 분석하며, 사용자와의 인터뷰와 간단한 테스트를 통해 추가 정보를 얻습니다. 최종 결과물은 한국어와 영어를 지원하는 단일 HTML 페이지 형태로 제공되며, 사용자의 기술 스택, 작업 스타일, 성장 궤적, 그리고 적합한 직무와 연봉 정보를 시각적으로 표현합니다. 특히 실제 사용 이력을 기반으로 하여 객관적인 평가를 지향하며, 데이터를 신중하게 해석하도록 안내합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Neckkup/portfolio-kup/tree/HEAD

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

portfolio-kup은(는) 무엇을 하나요?

실제 증거를 바탕으로 사용자의 프로필을 생성하고, 이를 한국어/영문 이중 언어 원페이지 웹 페이지로 만듭니다. 사용자에게는 한국어로 응답하며, 기술 용어는 영어를 유지합니다.

절차

순서대로 진행하십시오. · 사용자가 결정해야 하는 모든 질문은 AskUserQuestion을 사용하십시오. · 정보가 많은 내용은 채팅에서 먼저 요약한 후 페이지에 반영하십시오.

1. 데이터 수집

  1. Claude Code를 사용하는 다른 머신이 있는지 물어보십시오 (ssh user@host). · 사용자가 이미 요청에 포함시켰다면 묻지 않아도 됩니다.
  2. 모든 머신에서 다음 스크립트를 실행하십시오 (숫자만 출력하며, 프롬프트 메시지나 키는 출력하지 않음):
    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로 출력
    
  3. 프롬프트 내용 자체를 읽어 질적 평가를 수행하십시오 (~/.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. 웹 페이지 만들기

  1. templates/onepage.html을 스크래치패드로 복사하고, <script id="profile"> 내의 JSON만 수정하십시오. · 모든 텍스트는 {"th":…,"en":…} 형식입니다.
  2. 처음에 Artifact → quickstart (의도 other)로 생성한 후 게시(publish)하십시오. · icon profile
  3. 피드백에 따라 동일 파일(동일 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[].pcthoursPctFrom6am (24개 값, 06:00부터 순서대로)
weekday_pctweekdayPct
late_night_pcthoursNote (예: "거의 3분의 1의 작업이 오후 9시 이후에 발생")
monthly[*] 중 enough_datastages[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)

관련 스킬