처리 방식
scored는 서버에 계정도 데이터베이스도 두지 않습니다. 아래는 무엇이 어디에 남고, 무엇이 나가지 않는지에 대한 설명입니다.
세션 기록은 컴퓨터를 떠나지 않습니다
npx @jong-yeon/scored 는 내 컴퓨터에서 ~/.claude/projects 의 세션 기록을 읽어 그 자리에서 숫자로 집계합니다. 대화 원문은 어디로도 보내지 않고, 집계된 숫자만 주소의 # 뒤 조각에 실려 브라우저로 넘어갑니다.
# 뒤 조각(프래그먼트)은 브라우저가 서버로 전송하지 않는다고 HTTP 표준에 정해져 있습니다. 그래서 성적표를 여는 순간에도 우리 서버는 여러분의 숫자를 볼 수 없고, 접속 로그에도 남지 않습니다.
[ 내 컴퓨터 ]
~/.claude/projects
대화 원문 ────── 안 나감
│
│ 숫자로만 집계
▼
[ 주소창 ]
scored.kr/report
#eNq1V21v... ── 전송 안 됨
│
▼
[ 우리 서버 ]
본 것: 없음공유할 때만, 이만큼이 전송됩니다
결과 링크를 공유하면 카카오톡·슬랙 같은 곳이 미리보기 이미지를 만들려고 우리 서버를 호출합니다. 그때만, 미리보기에 그릴 값이 주소의 일반 쿼리로 전달됩니다.
| 전송됨 | 전송되지 않음 |
|---|---|
| 오늘의 유형 · 등급 · 대상일 · 요약 숫자 지표 · 도구 이름 | 대화 원문 · 자주 쓴 문장과 단어 · 파일 경로 · 프로젝트 이름 |
자주 쓴 문장·단어는 기본적으로 공유 링크에서 빠집니다. 넣으려면 공유 화면에서 직접 켜야 하고, 켜더라도 미리보기 이미지에는 쓰이지 않습니다.
방문 통계, 사용 흐름, 오류 기록
어떤 화면이 얼마나 쓰이는지 보려고 Google Analytics를 씁니다. 보내는 것은 “명령어를 복사했다”, “결과에 도달했다”, “링크를 복사했다” 같은 행동의 발생 사실뿐입니다. 성적표의 숫자·유형·등급·자주 쓴 문장은 통계로 보내지 않습니다.
화면이 깨졌을 때 고치려고 오류 기록도 남깁니다(Sentry). 오류가 났을 때만, 무엇이 어디서 터졌는지가 갑니다. 이때 주소의 # 뒤 조각은 떼고 보냅니다 — 거기에 성적 데이터가 들어 있기 때문입니다. 오류 기록에는 화면 녹화를 쓰지 않습니다.
첫 화면과 이 안내 화면처럼 성적이 없는 화면에서는 Microsoft Clarity로 클릭·스크롤 흐름을 기록합니다(화면 모양을 다시 재생해 볼 수 있는 녹화).성적표 화면(/report)에서는 Clarity를 아예 불러오지 않습니다 — Clarity는 주소의 # 뒤 조각까지 가져가기 때문입니다. 방문을 구분하려고 쿠키(_clck, _clsk)를 남깁니다.
매일 뽑기
매일 뽑으려면 셸에 alias sc="npx @jong-yeon/scored" 를 넣어두세요. 대화 전체는 ~/.scored/ 에 날짜별로 남고 (내 컴퓨터에만), 최근 7일치만 보관하고 오래된 건 자동으로 지웁니다. 지금 지우려면 rm -rf ~/.scored
판정 기준
등급은 오늘 하루의 프롬프트 수 · 토큰(입력+출력) · 활동 시간 세 가지를 각각 0~100점으로 환산한 뒤 평균을 냅니다. 실력이나 효율이 아니라 얼마나 많이 굴렸는지만 봅니다. 프롬프트가 10개 미만인 날은 채점하지 않아요.
| 지표 | 20점 | 40점 | 60점 | 80점 | 100점 |
|---|---|---|---|---|---|
| 프롬프트 | 10 | 20 | 50 | 90 | 120 |
| 토큰 | 400,000 | 800,000 | 2,500,000 | 7,500,000 | 15,000,000 |
| 활동 시간(분) | 30 | 90 | 270 | 360 | 480 |
값 사이는 비례해서 매기고, 마지막 값을 넘으면 100점이에요. 세 점수의 평균이 총점입니다.
- S
- 90점 이상
- A+
- 75점 이상
- A
- 60점 이상
- B+
- 45점 이상
- B
- 25점 이상
- C
- 그 외
성적표 판정 기준은 서비스 개선 시 바뀔 수 있어요 — 같은 링크라도 시점에 따라 등급이 달라질 수 있어요
위 설명이 사실인지는 코드로 확인할 수 있습니다. github.com/kjjyyy01/scored
처음으로