Chalk Labs
Need help deploying usage-analytics?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/jonghakseo-usage-analytics
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/usage-analytics
What's inside
- Skill name
usage-analytics- Description
- 서브에이전트·스킬 사용 통계를 분석할 때 사용한다.
- License
- MIT
- Instructions
- 164 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# usage-analytics
`$ARGUMENTS` 요청에 따라 서브에이전트·스킬 사용 데이터를 분석하고 인사이트를 도출한다.
## 데이터 소스
로그 파일: `~/.pi/agent/state/usage-analytics.jsonl`
각 줄은 JSON 객체이며 4가지 타입이 있다:
```jsonc
// epoch는 밀리초. 신규 기록은 sessionId 포함, 과거 continue 시작에는 "_continue"가 있을 수 있음
// 집계: subagent_end 우선, 안전한 식별자가 있고 end가 없는 batch/chain start만 fallback으로 사용
{ "type": "subagent_start", "ts": "ISO8601", "epoch": 1788840000000, "sessionId": "session-uuid", "agent": "worker", "mode": "run", "runId": 42 }
// 완료 시각은 원본 세션 메시지의 시각. 신규 기록은 세션·메시지 식별자와 가능한 경우 startedAt 포함
{ "type": "subagent_end", "ts": "ISO8601", "epoch": 1788840045000, "sessionId": "session-uuid", "sessionEntryId": "entry-id", "startedAt": 1788840000000, "agent": "worker", "runId": 42, "status": "error", "elapsedMs": 45000, "model": "openai-codex/gpt-5.3-codex-spark", "errorClass": "context_overflow", "peakContextTokens": 127196, "lastToolName": "read", "lastToolOutputChars": 9032 }
// 명시적 스킬 호출: `/skill:name`이 확장된 사용자 `<skill>` 메시지가 확정될 때 기록
{ "type": "skill_invoked", "ts": "ISO8601", "epoch": 1234567890, "skill": "picky-cli", "path": "/path/to/SKILL.md" }
// SKILL.md 읽기: 에이전트가 read 도구로 직접 열었을 때 기록하며, 같은 스킬의 10초 내 중복 read는 제외
{ "type": "skill_read", "ts": "ISO8601", "epoch": 1234567890, "skill": "systematic-debugging", "path": "/path/to/SKILL.md" }
```
## 실행 절차
### Step 1: 기간 결정
`$ARGUMENTS`에서 분석 기간을 파악한다. 명시되지 않으면 **최근 7일**을 기본값으로 사용한다.
| 사용자 표현 | 기간 |
|------------|------|
| "최근 일주일", "이번 주" | 최근 7일 |
| "최근 한 달", "이번 달" | 최근 30일 |
| "전체", "처음부터" | 로그 전체 |
| "오늘" | 오늘 하루 |
| 구체적 날짜 범위 | 해당 범위 |
### Step 2: 데이터 로드
```bash
cat ~/.pi/agent/state/usage-analytics.jsonl
```
파일이 없거나 비어있으면 **"아직 수집된 사용 데이터가 없습니다."** 로 종료한다.
### Step 3: 분석 항목 산출
로그 데이터를 파싱해서 아래 항목을 계산한다. 사용자 요청이 특정 항목에 한정되면 해당 항목만 계산해도 된다.
#### 3-A. 서브에이전트 분석
| 지표 | 계산 방법 |
|------|----------|
| **호출 빈도** | `subagent_end` 이벤트 수를 우선 집계하고, 매칭되는 end가 없는 legacy/incomplete batch/chain의 `subagent_start` 이벤트 수만 fallback으로 더함 |
| **성공/실패 건수** | `subagent_end`의 `status` 필드로 집계 |
| **완료 미확인** | fallback으로 더한 시작 이벤트 수. 실패 또는 진행 중이라고 단정하지 않음 |
| **에러율** | `error / (done + error) * 100`. 완료 기록이 없으면 `-`, 완료 미확인은 분모에서 제외 |
| **평균 소요시간** | `subagent_end`의 `elapsedMs` 평균 |
| **최장/최단 소요시간** | `elapsedMs`의 max / min |
| **사용 모델 분포** | `model` 필드별 건수 |
| **호출 모드 분포** | `mode` 필드별 건수 (run/continue/batch/chain) |
| **실패 원인 분포** | `errorClass`별 건수 (`context_overflow`, `overloaded`, `rate_limit`, `tool_error`, `aborted`, `process_error`, `unknown`) |
| **실패 시 컨텍스트·도구** | `peakContextTokens`, `lastToolName`, `lastToolOutputChars`로 실패 직전 상태 분석 |
| **일별 추이** | 날짜별 호출 건수 변화 |
시작/완료 매칭 규칙은 `~/.pi/agent/extensions/usage-analytics/index.ts`의 `getRunAnalyticsKeys`와 동일하게 적용한다.
1. `batchId + stepIndex` 또는 `pipelineId + stepIndex`를 우선한다. 그룹이 다르면 `runId`가 같아도 다른 실행이다.
2. 그룹 정보가 없을 때만 `sessionId + runId`를 사용한다. 숫자 `runId` 단독 매칭은 금지한다.
3. 그룹 정보가 불완전하거나 sessionId 없는 과거 독립 실행은 임의로 연결하지 않는다. 안전한 키 없는 시작과 `_continue` 플레이스홀더는 fallback에서 제외한다.
4. 총 호출은 성공 + 실패 + 완료 미확인으로 표시한다. 모드 분포는 별도로 `subagent_start` 이벤트를 분모로 쓰며, batch 명령 횟수가 아닌 작업별 시작 건수다.
완료 복구는 시작/완료 매칭과 별도다. 그룹·단계 키, 또는 `sessionId + runId + startedAt`(없으면 `sessionId + sessionEntryId + runId`)로 중복을 막는다. 같은 runId의 다른 `continue` 완료를 합치지 않는다. sessionId 없는 과거 독립 실행은 기록 시각이 실제 완료 시각과 다를 수 있어 자동 연결하지 않는다. 해당 runId의 과거 완료가 존재하고 같은 세션·runId의 신규 시작 기록 이전인 복구 후보는 보수적으로 건너뛴다. 복구된 과거 완료 시각을 신규 계측 시작점으로 쓰지 않는다. 이 미확인 구간을 완전한 복구나 실패 0건으로 해석하지 않는다.
#### 3-B. 스킬 분석
`skill_invoked`와 `skill_read`는 의미가 다르므로 합산하지 않고 반드시 분리한다.
| 지표 | 계산 방법 |
|------|----------|
| **명시적 호출 빈도** | `skill_invoked` 이벤트 수를 skill별로 집계. 실제 `/skill:name` 호출의 기본 지표로 사용 |
| **직접 읽기 빈도** | `skill_read` 이벤트 수를 skill별로 집계. 에이전트가 SKILL.md를 직접 로드한 활동으로 별도 표시 |
| **일별 추이** | 날짜별 `skill_invoked`와 `skill_read` 건수를 각각 계산 |
| **마지막 호출일** | 가장 최근 `skill_invoked`의 `ts` |
| **마지막 읽기일** | 가장 최근 `skill_read`의 `ts` |
> `skill_invoked`는 이벤트 도입 이후부터 forward-only로 기록된다. 과거 데이터는 백필되지 않았으므로, 도입 전 기간의 호출 0회를 미사용 근거로 해석하지 않는다.
### Step 4: 인사이트 도출
산출된 수치를 바탕으로 아래 관점에서 인사이트를 도출한다.
#### 서브에이전트 인사이트
- **과다 사용**: 전체 호출의 40% 이상을 차지하는 에이전트 → 세분화(역할 분리) 검토 필요
- **미사용/저사용**: 분석 기간 내 0회 또는 1회만 호출된 에이전트 → 불필요 여부 검토
- **높은 에러율**: 에러율 20% 이상인 에이전트 → 프롬프트/설정 개선 필요
- **비효율**: 평균 소요시간이 다른 에이전트 대비 2배 이상인 에이전트 → 태스크 범위 축소 검토
- **continue 비율**: continue 모드 비율이 높으면 → 한 번에 완료하지 못하는 태스크가 많다는 신호
- **컨텍스트 초과**: `errorClass=context_overflow`이고 `peakContextTokens`가 모델 한도에 근접하면 → 태스크 분할·탐색 출력 제한·guard 조정 검토
- **도구 출력 과다**: 실패 직전 `lastToolOutputChars`가 크면 → 검색 limit·read range·대상 경로 축소 검토
#### 스킬 인사이트
- **미사용**: 계측 적용 기간 내 `skill_invoked`와 `skill_read`가 모두 0회인 스킬 → 삭제 또는 통합 검토
- **명시적 과다 호출**: 전체 `skill_invoked`의 50% 이상을 차지 → 해당 스킬의 명시적 호출 패턴 검토
- **과다 읽기**: 전체 `skill_read`의 50% 이상을 차지 → 반복 로드 또는 지나치게 넓은 트리거 검토
- **최근 미사용**: 마지막 호출과 마지막 읽기가 모두 30일 이상 전 → 여전히 필요한지 재평가
### Step 5: 보고서 출력
아래 형식으로 보고서를 작성한다.
```
## 📊 사용 통계 분석 (기간: YYYY-MM-DD ~ YYYY-MM-DD)
### 🤖 서브에이전트From Jonghakseo/my-pi, MIT.
More from Jonghakseo/my-pi
- 0.634score
harness-refine-sweep
Jonghakseo
최근 여러 Pi 세션을 한꺼번에 회고해 하네스 개선점을 찾을 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.634score
show-me-your-work
Jonghakseo
장기·무인 작업에서 나중에 검토할 결정 로그를 남길 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.634score
harness-refine
Jonghakseo
현재 Pi 세션을 회고해 하네스(AGENTS.md·스킬·메모리 등) 개선점을 찾을 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
context7-cli
Jonghakseo
라이브러리·프레임워크 공식 문서와 API 예시를 조회할 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
dynamic-workflow
Jonghakseo
장기·병렬·대규모 작업을 서브에이전트로 나눠 실행할 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
pickle
Jonghakseo
코딩·조사 작업을 별도 Picky Pickle에 위임할 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
prove-it-works
Jonghakseo
완료를 선언하기 전에 실제 결과물로 동작을 검증할 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
ship
Jonghakseo
변경사항을 커밋하고 remote에 push할 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
explain-for-no-context
Jonghakseo
현재 논의를 맥락 없는 사람도 이해하도록 쉬운 말로 다시 설명할 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
notion-doc
Jonghakseo
보고서·요약·회의록 같은 문서를 Notion 스타일로 만들 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
self-healing
Jonghakseo
변경사항을 자동으로 리뷰·수정·재검토하는 self-healing 요청에 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
memory-manage
Jonghakseo
저장된 메모리의 중복·노후 항목을 점검하고 정리할 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9
Signals
- Stars
- 15
- Forks
- 5
- Open issues
- 0
- Last commit (this folder)
- Sep 30, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Jonghakseo/my-pi
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Jonghakseo
- 0.634score
harness-refine
Jonghakseo
현재 Pi 세션을 회고해 하네스(AGENTS.md·스킬·메모리 등) 개선점을 찾을 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.634score
harness-refine-sweep
Jonghakseo
최근 여러 Pi 세션을 한꺼번에 회고해 하네스 개선점을 찾을 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.634score
show-me-your-work
Jonghakseo
장기·무인 작업에서 나중에 검토할 결정 로그를 남길 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
create-verification-skill
Jonghakseo
레포에 실제 앱 동작을 검증하는 verify 스킬을 만들 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
gh-attach
Jonghakseo
GitHub 이슈·PR·코멘트에 로컬 이미지나 영상을 첨부할 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9 - 0.629score
context7-cli
Jonghakseo
라이브러리·프레임워크 공식 문서와 API 예시를 조회할 때 사용한다.
SkillAFreshness: A★ 15Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get usage-analytics running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
usage-analytics skill. Agent Mart. https://agentmart.dev/skills/jonghakseo-usage-analytics (last updated 2026-10-24)