cc-proficiency 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +59 -18
  2. package/README.zh-CN.md +36 -10
  3. package/dist/cli/commands/achievements.d.ts.map +1 -1
  4. package/dist/cli/commands/achievements.js +1 -0
  5. package/dist/cli/commands/achievements.js.map +1 -1
  6. package/dist/cli/commands/analyze.d.ts.map +1 -1
  7. package/dist/cli/commands/analyze.js +14 -2
  8. package/dist/cli/commands/analyze.js.map +1 -1
  9. package/dist/cli/commands/badge.d.ts.map +1 -1
  10. package/dist/cli/commands/badge.js +8 -2
  11. package/dist/cli/commands/badge.js.map +1 -1
  12. package/dist/cli/commands/config.d.ts.map +1 -1
  13. package/dist/cli/commands/config.js +4 -0
  14. package/dist/cli/commands/config.js.map +1 -1
  15. package/dist/cli/commands/explain.js +1 -1
  16. package/dist/cli/commands/explain.js.map +1 -1
  17. package/dist/cli/commands/init.d.ts.map +1 -1
  18. package/dist/cli/commands/init.js +7 -1
  19. package/dist/cli/commands/init.js.map +1 -1
  20. package/dist/cli/commands/leaderboard.d.ts +2 -0
  21. package/dist/cli/commands/leaderboard.d.ts.map +1 -0
  22. package/dist/cli/commands/leaderboard.js +58 -0
  23. package/dist/cli/commands/leaderboard.js.map +1 -0
  24. package/dist/cli/commands/process.d.ts.map +1 -1
  25. package/dist/cli/commands/process.js +25 -5
  26. package/dist/cli/commands/process.js.map +1 -1
  27. package/dist/cli/commands/refresh.d.ts +7 -0
  28. package/dist/cli/commands/refresh.d.ts.map +1 -0
  29. package/dist/cli/commands/refresh.js +66 -0
  30. package/dist/cli/commands/refresh.js.map +1 -0
  31. package/dist/cli/commands/share.d.ts +2 -0
  32. package/dist/cli/commands/share.d.ts.map +1 -0
  33. package/dist/cli/commands/share.js +129 -0
  34. package/dist/cli/commands/share.js.map +1 -0
  35. package/dist/cli/commands/status.d.ts.map +1 -1
  36. package/dist/cli/commands/status.js +1 -0
  37. package/dist/cli/commands/status.js.map +1 -1
  38. package/dist/cli/commands/update.d.ts +2 -0
  39. package/dist/cli/commands/update.d.ts.map +1 -0
  40. package/dist/cli/commands/update.js +40 -0
  41. package/dist/cli/commands/update.js.map +1 -0
  42. package/dist/cli/index.js +38 -19
  43. package/dist/cli/index.js.map +1 -1
  44. package/dist/cli/services/hooks.d.ts.map +1 -1
  45. package/dist/cli/services/hooks.js +36 -18
  46. package/dist/cli/services/hooks.js.map +1 -1
  47. package/dist/cli/services/leaderboard.d.ts +11 -0
  48. package/dist/cli/services/leaderboard.d.ts.map +1 -0
  49. package/dist/cli/services/leaderboard.js +120 -0
  50. package/dist/cli/services/leaderboard.js.map +1 -0
  51. package/dist/cli/services/publishing.d.ts +16 -0
  52. package/dist/cli/services/publishing.d.ts.map +1 -1
  53. package/dist/cli/services/publishing.js +88 -39
  54. package/dist/cli/services/publishing.js.map +1 -1
  55. package/dist/cli/services/self-update.d.ts +14 -0
  56. package/dist/cli/services/self-update.d.ts.map +1 -0
  57. package/dist/cli/services/self-update.js +45 -0
  58. package/dist/cli/services/self-update.js.map +1 -0
  59. package/dist/cli/services/sessions.d.ts +1 -0
  60. package/dist/cli/services/sessions.d.ts.map +1 -1
  61. package/dist/cli/services/sessions.js +15 -2
  62. package/dist/cli/services/sessions.js.map +1 -1
  63. package/dist/cli/utils/formatting.d.ts +2 -2
  64. package/dist/cli/utils/formatting.d.ts.map +1 -1
  65. package/dist/cli/utils/formatting.js +7 -1
  66. package/dist/cli/utils/formatting.js.map +1 -1
  67. package/dist/cli/utils/update-check.d.ts +9 -0
  68. package/dist/cli/utils/update-check.d.ts.map +1 -0
  69. package/dist/cli/utils/update-check.js +124 -0
  70. package/dist/cli/utils/update-check.js.map +1 -0
  71. package/dist/cli/utils/version.d.ts +2 -0
  72. package/dist/cli/utils/version.d.ts.map +1 -0
  73. package/dist/cli/utils/version.js +16 -0
  74. package/dist/cli/utils/version.js.map +1 -0
  75. package/dist/gist/registry.d.ts +26 -0
  76. package/dist/gist/registry.d.ts.map +1 -0
  77. package/dist/gist/registry.js +101 -0
  78. package/dist/gist/registry.js.map +1 -0
  79. package/dist/gist/uploader.d.ts +9 -1
  80. package/dist/gist/uploader.d.ts.map +1 -1
  81. package/dist/gist/uploader.js +47 -1
  82. package/dist/gist/uploader.js.map +1 -1
  83. package/dist/hooks/token-refresh.js +72 -0
  84. package/dist/i18n/locales.d.ts.map +1 -1
  85. package/dist/i18n/locales.js +2 -1
  86. package/dist/i18n/locales.js.map +1 -1
  87. package/dist/index.d.ts +3 -1
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +5 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/parsers/config-detectors.d.ts +29 -0
  92. package/dist/parsers/config-detectors.d.ts.map +1 -0
  93. package/dist/parsers/config-detectors.js +367 -0
  94. package/dist/parsers/config-detectors.js.map +1 -0
  95. package/dist/parsers/config-parser.d.ts +7 -2
  96. package/dist/parsers/config-parser.d.ts.map +1 -1
  97. package/dist/parsers/config-parser.js +31 -229
  98. package/dist/parsers/config-parser.js.map +1 -1
  99. package/dist/parsers/transcript-parser.d.ts.map +1 -1
  100. package/dist/parsers/transcript-parser.js +10 -0
  101. package/dist/parsers/transcript-parser.js.map +1 -1
  102. package/dist/renderer/animated-svg.d.ts +9 -0
  103. package/dist/renderer/animated-svg.d.ts.map +1 -0
  104. package/dist/renderer/animated-svg.js +125 -0
  105. package/dist/renderer/animated-svg.js.map +1 -0
  106. package/dist/renderer/svg.d.ts +33 -5
  107. package/dist/renderer/svg.d.ts.map +1 -1
  108. package/dist/renderer/svg.js +77 -55
  109. package/dist/renderer/svg.js.map +1 -1
  110. package/dist/scoring/engine.d.ts +1 -1
  111. package/dist/scoring/engine.d.ts.map +1 -1
  112. package/dist/scoring/engine.js +30 -8
  113. package/dist/scoring/engine.js.map +1 -1
  114. package/dist/scoring/feature-scores.d.ts +27 -0
  115. package/dist/scoring/feature-scores.d.ts.map +1 -0
  116. package/dist/scoring/feature-scores.js +63 -0
  117. package/dist/scoring/feature-scores.js.map +1 -0
  118. package/dist/scoring/rules.d.ts.map +1 -1
  119. package/dist/scoring/rules.js +12 -0
  120. package/dist/scoring/rules.js.map +1 -1
  121. package/dist/scoring/signals.js +2 -0
  122. package/dist/scoring/signals.js.map +1 -1
  123. package/dist/store/achievements.d.ts.map +1 -1
  124. package/dist/store/achievements.js +8 -0
  125. package/dist/store/achievements.js.map +1 -1
  126. package/dist/store/config-sync.d.ts +36 -0
  127. package/dist/store/config-sync.d.ts.map +1 -0
  128. package/dist/store/config-sync.js +161 -0
  129. package/dist/store/config-sync.js.map +1 -0
  130. package/dist/store/local-store.d.ts +6 -1
  131. package/dist/store/local-store.d.ts.map +1 -1
  132. package/dist/store/local-store.js +74 -3
  133. package/dist/store/local-store.js.map +1 -1
  134. package/dist/store/public-profile.d.ts +12 -0
  135. package/dist/store/public-profile.d.ts.map +1 -0
  136. package/dist/store/public-profile.js +50 -0
  137. package/dist/store/public-profile.js.map +1 -0
  138. package/dist/store/queue.js +1 -1
  139. package/dist/store/queue.js.map +1 -1
  140. package/dist/store/remote-store.d.ts +8 -1
  141. package/dist/store/remote-store.d.ts.map +1 -1
  142. package/dist/store/remote-store.js +32 -4
  143. package/dist/store/remote-store.js.map +1 -1
  144. package/dist/types.d.ts +77 -0
  145. package/dist/types.d.ts.map +1 -1
  146. package/dist/utils/format.d.ts +6 -0
  147. package/dist/utils/format.d.ts.map +1 -0
  148. package/dist/utils/format.js +15 -0
  149. package/dist/utils/format.js.map +1 -0
  150. package/hooks/token-refresh.ts +75 -0
  151. package/package.json +1 -1
package/README.md CHANGED
@@ -35,7 +35,7 @@
35
35
 
36
36
  ## What it does
37
37
 
38
- Uses a **rule-based engine** to analyze your Claude Code session transcripts **locally**, scoring usage patterns across 5 domains:
38
+ Analyzes your Claude Code session transcripts **locally** with a rule-based engine, scoring usage patterns across 5 domains:
39
39
 
40
40
  | Domain | Weight | What it measures |
41
41
  |--------|--------|-----------------|
@@ -45,11 +45,14 @@ Uses a **rule-based engine** to analyze your Claude Code session transcripts **l
45
45
  | **Prompt Craft** | 20% | Structured prompts, code blocks, error traces, refinement |
46
46
  | **Context Mgmt** | 20% | Cross-session memory, CLAUDE.md updates, sustained projects |
47
47
 
48
- Plus **8 feature mini-bars** (Hooks, Plugins, Skills, MCP, Agents, Plan, Memory, Rules) showing per-feature adoption as a heatmap.
48
+ Also shows **8 feature mini-bars** (Hooks, Plugins, Skills, MCP, Agents, Plan, Memory, Rules) as a heatmap row.
49
49
 
50
50
  <p align="center">
51
51
  <a href="https://github.com/Z-M-Huang/cc-proficiency">
52
- <img src="https://gist.githubusercontent.com/Z-M-Huang/2717fa94690c459d5093650c87f49868/raw/cc-proficiency.svg" alt="CC Proficiency Badge Example" />
52
+ <img src="https://gist.githubusercontent.com/Z-M-Huang/2717fa94690c459d5093650c87f49868/raw/cc-proficiency.svg" alt="CC Proficiency Badge — Static" />
53
+ </a>
54
+ <a href="https://github.com/Z-M-Huang/cc-proficiency">
55
+ <img src="https://gist.githubusercontent.com/Z-M-Huang/2717fa94690c459d5093650c87f49868/raw/cc-proficiency-animated.svg" alt="CC Proficiency Badge — Animated" />
53
56
  </a>
54
57
  </p>
55
58
 
@@ -190,10 +193,14 @@ $ cc-proficiency badge --output badge.svg
190
193
  After running `cc-proficiency init`, add this to your README:
191
194
 
192
195
  ```markdown
196
+ <!-- Static badge -->
193
197
  ![Claude Code Proficiency](https://gist.githubusercontent.com/<username>/<gist-id>/raw/cc-proficiency.svg)
198
+
199
+ <!-- Animated badge (bars fill on load) -->
200
+ ![Claude Code Proficiency](https://gist.githubusercontent.com/<username>/<gist-id>/raw/cc-proficiency-animated.svg)
194
201
  ```
195
202
 
196
- The badge updates automatically after each Claude Code session (via the Stop hook).
203
+ Both badges update automatically after each Claude Code session (via the Stop hook).
197
204
 
198
205
  ## Progressive Badge
199
206
 
@@ -205,11 +212,23 @@ The badge adapts based on how much data is available:
205
212
  | **Early Results** | 3–9 | 5 domain bars + 8 feature mini-bars (low-confidence indicators ○) |
206
213
  | **Full Badge** | 10+ | Full domain bars, feature heatmap, confidence dots (● ◐ ○) |
207
214
 
215
+ ## Improve your scores
216
+
217
+ The **[Gamification Guide](https://github.com/Z-M-Huang/cc-proficiency/wiki/Gamification-Guide)** covers:
218
+
219
+ - First day through expert-level progression path
220
+ - Tips for each of the 5 domains
221
+ - How to unlock all 15 achievements
222
+ - What drives each feature mini-bar from 0 to 100
223
+ - Streak system and leaderboard
224
+
225
+ > **[Gamification Guide](https://github.com/Z-M-Huang/cc-proficiency/wiki/Gamification-Guide)** | **[游戏化攻略(中文)](https://github.com/Z-M-Huang/cc-proficiency/wiki/Gamification-Guide-zh)**
226
+
208
227
  ## How scoring works
209
228
 
210
- ### Rule-based engine, not counting
229
+ ### Rule-based engine
211
230
 
212
- Instead of counting tool usage, cc-proficiency uses a **pattern-matching rule engine** with ~53 rules across 5 domains. Each rule detects a specific behavior pattern and awards points by tier:
231
+ cc-proficiency uses a **pattern-matching rule engine** with ~55 rules across 5 domains instead of counting tool calls. Each rule detects a specific behavior pattern and awards points by tier:
213
232
 
214
233
  | Tier | Points | Example Rule |
215
234
  |------|--------|-------------|
@@ -230,11 +249,11 @@ Instead of counting tool usage, cc-proficiency uses a **pattern-matching rule en
230
249
 
231
250
  ### 8 Feature Mini-Bars
232
251
 
233
- Below the domain bars, a heatmap row shows adoption per feature:
252
+ Below the domain bars, a heatmap row shows depth per feature:
234
253
 
235
254
  `Hooks · Plugins · Skills · MCP · Agents · Plan · Memory · Rules`
236
255
 
237
- Each mini-bar derives its score from the same rules a rule tagged with `"hooks"` contributes to both its domain bar and the Hooks mini-bar.
256
+ Each mini-bar uses **depth-based scoring** with logarithmic curves that reflect actual usage, not just whether you've tried a feature once. Having hooks configured gets you ~30; firing them across hundreds of sessions gets you closer to 100. See the [Gamification Guide](https://github.com/Z-M-Huang/cc-proficiency/wiki/Gamification-Guide) for details.
238
257
 
239
258
  ### Bucket aggregation with caps
240
259
 
@@ -242,14 +261,14 @@ Scores are not raw sums. Each domain has capped buckets:
242
261
 
243
262
  | Bucket | Max Points | Source |
244
263
  |--------|-----------|--------|
245
- | **Config** | 25 pts | Config-based rules (CLAUDE.md, hooks, plugins available immediately) |
246
- | **Behavior** | 75 pts | Behavior-based rules (transcript patterns grow over time) |
264
+ | **Config** | 25 pts | Config-based rules (CLAUDE.md, hooks, plugins; available immediately) |
265
+ | **Behavior** | 75 pts | Behavior-based rules (transcript patterns; grow over time) |
247
266
  | **Penalty** | -15 pts max | Anti-pattern deductions |
248
267
 
249
268
  This means:
250
- - **Fresh installs** can score up to ~25 per domain from config alone (no transcripts needed)
251
- - **No domain exceeds 35 without transcript evidence** config alone can't fake proficiency
252
- - **Anti-patterns are capped** a few bad sessions don't destroy your score
269
+ - **Fresh installs** can score up to ~25 raw config points per domain (boosted to ~50 during calibration via 2.0x scaling)
270
+ - **After calibration** (10+ sessions) config alone caps at ~25 per domain; transcript evidence drives the rest
271
+ - **Anti-patterns are capped**, so a few bad sessions don't destroy your score
253
272
 
254
273
  ### Phase-aware weighting
255
274
 
@@ -263,17 +282,17 @@ Config evidence is weighted more heavily during calibration, less as transcripts
263
282
 
264
283
  ### Anti-gaming
265
284
 
266
- - Rules fire **per-session with caps** repeating the same tool 100x doesn't help
285
+ - Rules fire **per-session with caps**; repeating the same tool 100x doesn't help
267
286
  - **Anti-pattern rules** deduct points for bad habits (shotgun parallel calls, unstructured walls of text)
268
- - Each rule has `maxPerSession` investigation chains cap at 3 per session
269
- - Config scores are **capped at 25** you can't max a domain by just installing plugins
287
+ - Each rule has `maxPerSession`; investigation chains cap at 3 per session
288
+ - Config scores are **capped at 25**, so you can't max a domain by just installing plugins
270
289
 
271
290
  ## Privacy
272
291
 
273
292
  | Concern | How it's handled |
274
293
  |---------|-----------------|
275
294
  | **Data location** | All analysis happens **locally** on your machine |
276
- | **What's stored** | Only aggregate counts, ratios, and boolean flags no file paths, code, or prompts |
295
+ | **What's stored** | Only aggregate counts, ratios, and boolean flags (no file paths, code, or prompts) |
277
296
  | **Gist visibility** | **Private by default** (secret URL, not listed on your profile) |
278
297
  | **Offline mode** | Works fully offline without `gh` CLI (local-only mode) |
279
298
  | **CI/CD** | Non-interactive sessions are automatically detected and excluded |
@@ -288,9 +307,31 @@ Config evidence is weighted more heavily during calibration, less as transcripts
288
307
  | `cc-proficiency badge [--output <file>]` | Generate SVG badge |
289
308
  | `cc-proficiency push` | Upload badge to Gist |
290
309
  | `cc-proficiency explain` | Show score drivers and tips |
310
+ | `cc-proficiency achievements` | View achievement progress |
311
+ | `cc-proficiency status` | Show hook activity, queue, and config |
291
312
  | `cc-proficiency config [key] [value]` | View/set configuration |
313
+ | `cc-proficiency share [--remove]` | Join or leave the community leaderboard |
314
+ | `cc-proficiency leaderboard` | View community rankings |
315
+ | `cc-proficiency update` | Update to the latest version |
292
316
  | `cc-proficiency uninstall` | Remove hooks and clean up |
293
317
 
318
+ ### Community Leaderboard
319
+
320
+ Opt into the community leaderboard to compare your proficiency with other Claude Code users:
321
+
322
+ ```bash
323
+ # Join the leaderboard (creates a separate public profile)
324
+ $ cc-proficiency share
325
+
326
+ # View rankings
327
+ $ cc-proficiency leaderboard
328
+
329
+ # Leave the leaderboard
330
+ $ cc-proficiency share --remove
331
+ ```
332
+
333
+ Your private data (session details, project names, file paths) is never shared. Only scores, streak, and achievement count are public. See the [wiki](https://github.com/Z-M-Huang/cc-proficiency/wiki) for full documentation.
334
+
294
335
  ## Architecture
295
336
 
296
337
  ```
@@ -315,7 +356,7 @@ Contributions welcome! Please open an issue first to discuss what you'd like to
315
356
  git clone https://github.com/Z-M-Huang/cc-proficiency.git
316
357
  cd cc-proficiency
317
358
  npm install
318
- npm test # 146 tests
359
+ npm test # 200 tests
319
360
  npm run build # compile to dist/
320
361
  npm run typecheck # tsc --noEmit
321
362
  npm run lint # eslint
package/README.zh-CN.md CHANGED
@@ -49,7 +49,10 @@
49
49
 
50
50
  <p align="center">
51
51
  <a href="https://github.com/Z-M-Huang/cc-proficiency">
52
- <img src="https://gist.githubusercontent.com/Z-M-Huang/2717fa94690c459d5093650c87f49868/raw/cc-proficiency.svg" alt="CC Proficiency 徽章示例" />
52
+ <img src="https://gist.githubusercontent.com/Z-M-Huang/2717fa94690c459d5093650c87f49868/raw/cc-proficiency.svg" alt="CC Proficiency 徽章 — 静态" />
53
+ </a>
54
+ <a href="https://github.com/Z-M-Huang/cc-proficiency">
55
+ <img src="https://gist.githubusercontent.com/Z-M-Huang/2717fa94690c459d5093650c87f49868/raw/cc-proficiency-animated.svg" alt="CC Proficiency 徽章 — 动画" />
53
56
  </a>
54
57
  </p>
55
58
 
@@ -141,7 +144,11 @@ cc-proficiency badge
141
144
  运行 `cc-proficiency init` 后,在 README 中添加:
142
145
 
143
146
  ```markdown
147
+ <!-- 静态徽章 -->
144
148
  ![Claude Code Proficiency](https://gist.githubusercontent.com/<用户名>/<gist-id>/raw/cc-proficiency.svg)
149
+
150
+ <!-- 动画徽章(加载时进度条填充) -->
151
+ ![Claude Code Proficiency](https://gist.githubusercontent.com/<用户名>/<gist-id>/raw/cc-proficiency-animated.svg)
145
152
  ```
146
153
 
147
154
  ## 渐进式徽章
@@ -154,11 +161,23 @@ cc-proficiency badge
154
161
  | **初步结果** | 3–9 | 5 个领域条 + 8 个特性迷你条(低置信度 ○) |
155
162
  | **完整徽章** | 10+ | 完整领域条、特性热力图、置信度圆点(● ◐ ○) |
156
163
 
164
+ ## 提升分数
165
+
166
+ **[游戏化攻略](https://github.com/Z-M-Huang/cc-proficiency/wiki/Gamification-Guide-zh)** 涵盖:
167
+
168
+ - 从第一天到专家级的进阶路径
169
+ - 5 个领域的提升技巧
170
+ - 解锁全部 15 个成就的方法
171
+ - 每个特性迷你条从 0 到 100 的具体指南
172
+ - 连续打卡和排行榜
173
+
174
+ > **[游戏化攻略(中文)](https://github.com/Z-M-Huang/cc-proficiency/wiki/Gamification-Guide-zh)** | **[Gamification Guide (English)](https://github.com/Z-M-Huang/cc-proficiency/wiki/Gamification-Guide)**
175
+
157
176
  ## 评分系统
158
177
 
159
178
  ### 基于规则的引擎
160
179
 
161
- cc-proficiency 使用 **~53 条模式匹配规则**,而不是简单计数:
180
+ cc-proficiency 使用 **~55 条模式匹配规则**,而不是简单计数:
162
181
 
163
182
  | 级别 | 分值 | 示例规则 |
164
183
  |------|------|---------|
@@ -179,16 +198,18 @@ cc-proficiency 使用 **~53 条模式匹配规则**,而不是简单计数:
179
198
 
180
199
  ### 8 个特性迷你条
181
200
 
182
- 领域条下方,热力图行展示各特性的采用程度:
201
+ 领域条下方,热力图行展示各特性的使用深度:
183
202
 
184
203
  `钩子 · 插件 · 技能 · MCP · 代理 · 计划 · 记忆 · 规则`
185
204
 
205
+ 每个迷你条使用**深度评分**,对数曲线反映实际使用情况,不只看你是否试过某个功能。配置钩子能拿到 ~30 分;在数百个会话中触发钩子才能接近 100 分。详见[游戏化攻略](https://github.com/Z-M-Huang/cc-proficiency/wiki/Gamification-Guide-zh)。
206
+
186
207
  ### 桶聚合与上限
187
208
 
188
209
  | 桶 | 最大分值 | 来源 |
189
210
  |----|---------|------|
190
- | **配置** | 25 分 | 配置规则(CLAUDE.md、钩子、插件 —— 立即可用) |
191
- | **行为** | 75 分 | 行为规则(会话模式 —— 随时间增长) |
211
+ | **配置** | 25 分 | 配置规则(CLAUDE.md、钩子、插件,立即可用) |
212
+ | **行为** | 75 分 | 行为规则(会话模式,随时间增长) |
192
213
  | **惩罚** | -15 分上限 | 反模式扣分 |
193
214
 
194
215
  ### 阶段感知权重
@@ -201,17 +222,17 @@ cc-proficiency 使用 **~53 条模式匹配规则**,而不是简单计数:
201
222
 
202
223
  ### 防作弊
203
224
 
204
- - 规则**按会话上限触发** —— 重复相同工具 100 次无效
225
+ - 规则**按会话上限触发**,重复相同工具 100 次无效
205
226
  - **反模式规则**对不良习惯扣分
206
- - 每条规则有 `maxPerSession` —— 调查链每会话上限 3 次
207
- - 配置分数**上限 25** —— 仅安装插件无法达到满分
227
+ - 每条规则有 `maxPerSession`,调查链每会话上限 3 次
228
+ - 配置分数**上限 25**,仅安装插件无法达到满分
208
229
 
209
230
  ## 隐私
210
231
 
211
232
  | 关注点 | 处理方式 |
212
233
  |--------|---------|
213
234
  | **数据位置** | 所有分析**在本地机器**上进行 |
214
- | **存储内容** | 仅存储聚合计数、比率和布尔标志 —— 无文件路径、代码或提示词 |
235
+ | **存储内容** | 仅存储聚合计数、比率和布尔标志(无文件路径、代码或提示词) |
215
236
  | **Gist 可见性** | **默认私有**(秘密 URL,不在个人资料中列出) |
216
237
  | **离线模式** | 无需 `gh` CLI 即可完全离线工作(仅本地模式) |
217
238
  | **CI/CD** | 非交互式会话自动检测并排除 |
@@ -226,8 +247,13 @@ cc-proficiency 使用 **~53 条模式匹配规则**,而不是简单计数:
226
247
  | `cc-proficiency badge [--output <文件>]` | 生成 SVG 徽章 |
227
248
  | `cc-proficiency push` | 上传徽章到 Gist |
228
249
  | `cc-proficiency explain` | 显示分数驱动因素和建议 |
250
+ | `cc-proficiency achievements` | 查看成就进度 |
251
+ | `cc-proficiency status` | 显示钩子活动、队列和配置 |
229
252
  | `cc-proficiency config [键] [值]` | 查看/设置配置 |
230
253
  | `cc-proficiency config locale zh-CN` | 切换到中文徽章 |
254
+ | `cc-proficiency share [--remove]` | 加入或退出社区排行榜 |
255
+ | `cc-proficiency leaderboard` | 查看社区排名 |
256
+ | `cc-proficiency update` | 更新到最新版本 |
231
257
  | `cc-proficiency uninstall` | 移除钩子和清理数据 |
232
258
 
233
259
  ## 架构
@@ -254,7 +280,7 @@ cc-proficiency process
254
280
  git clone https://github.com/Z-M-Huang/cc-proficiency.git
255
281
  cd cc-proficiency
256
282
  npm install
257
- npm test # 146 tests
283
+ npm test # 200 tests
258
284
  npm run build # 编译到 dist/
259
285
  npm run typecheck # tsc --noEmit
260
286
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"achievements.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/achievements.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,IAAI,IAAI,CA+CtC"}
1
+ {"version":3,"file":"achievements.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/achievements.ts"],"names":[],"mappings":"AAMA,wBAAgB,eAAe,IAAI,IAAI,CAgDtC"}
@@ -30,6 +30,7 @@ function cmdAchievements() {
30
30
  streak: { current: 0, longest: 0 },
31
31
  features: result.features,
32
32
  activeDates: [],
33
+ leaderboard: config.leaderboard ?? false,
33
34
  };
34
35
  const newLocal = (0, achievements_js_1.checkAchievements)(ctx, unlockedIds);
35
36
  const allUnlocked = new Set([...unlockedIds, ...newLocal]);
@@ -1 +1 @@
1
- {"version":3,"file":"achievements.js","sourceRoot":"","sources":["../../../src/cli/commands/achievements.ts"],"names":[],"mappings":";;AAMA,0CA+CC;AArDD,+DAAmE;AACnE,wDAAyE;AACzE,iEAA+D;AAC/D,iEAA8E;AAC9E,0DAAqD;AAErD,SAAgB,eAAe;IAC7B,MAAM,KAAK,GAAG,IAAA,0BAAS,GAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAA,2BAAU,GAAE,CAAC;IAE5B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,MAAM,CAAC,MAAM,IAAI,IAAA,+BAAiB,GAAE,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAA,0BAAY,EAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAA,kCAAgB,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;IAChC,MAAM,GAAG,GAAG;QACV,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;QACtC,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,EAAE;KAChB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,mCAAiB,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,CAAC,IAAI,IAAI,8BAAY,CAAC,MAAM,KAAK,CAAC,CAAC;IAE/E,KAAK,MAAM,WAAW,IAAI,8BAAY,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,IAAA,2BAAW,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEjC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"achievements.js","sourceRoot":"","sources":["../../../src/cli/commands/achievements.ts"],"names":[],"mappings":";;AAMA,0CAgDC;AAtDD,+DAAmE;AACnE,wDAAyE;AACzE,iEAA+D;AAC/D,iEAA8E;AAC9E,0DAAqD;AAErD,SAAgB,eAAe;IAC7B,MAAM,KAAK,GAAG,IAAA,0BAAS,GAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAA,2BAAU,GAAE,CAAC;IAE5B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,MAAM,CAAC,MAAM,IAAI,IAAA,+BAAiB,GAAE,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAA,0BAAY,EAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAA,kCAAgB,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;IAChC,MAAM,GAAG,GAAG;QACV,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU;QACtC,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;KACzC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,mCAAiB,EAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,qBAAqB,WAAW,CAAC,IAAI,IAAI,8BAAY,CAAC,MAAM,KAAK,CAAC,CAAC;IAE/E,KAAK,MAAM,WAAW,IAAI,8BAAY,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,GAAG,GAAG,IAAA,2BAAW,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEjC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,aAAa,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB9D"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC9D"}
@@ -8,13 +8,24 @@ async function cmdAnalyze(args) {
8
8
  const full = args.includes("--full");
9
9
  console.log(full ? "Running full analysis..." : "Running incremental analysis...\n");
10
10
  const { sessions, config } = await (0, sessions_js_1.gatherData)(full);
11
+ // Always persist current cwd, even if no sessions found
12
+ const store = (0, local_store_js_1.loadStore)();
13
+ const known = new Set(store.knownProjectCwds ?? []);
14
+ known.add(process.cwd());
15
+ store.knownProjectCwds = [...known];
16
+ (0, local_store_js_1.saveStore)(store);
11
17
  if (sessions.length === 0) {
12
18
  console.log("No sessions found. Use Claude Code first, then run analyze again.");
13
19
  return;
14
20
  }
15
21
  const userConfig = (0, local_store_js_1.loadConfig)();
16
22
  const result = (0, sessions_js_1.runAnalysis)(sessions, config, userConfig.username ?? "unknown");
17
- const store = (0, local_store_js_1.loadStore)();
23
+ // Build token log entries from parsed sessions
24
+ (0, local_store_js_1.upsertTokenLog)(store, sessions.map((s) => ({
25
+ sessionId: s.sessionId,
26
+ timestamp: s.endTime,
27
+ tokens: s.totalTokens,
28
+ })));
18
29
  store.lastResult = result;
19
30
  for (const s of sessions) {
20
31
  if (!store.processedSessionIds.includes(s.sessionId)) {
@@ -22,6 +33,7 @@ async function cmdAnalyze(args) {
22
33
  }
23
34
  }
24
35
  (0, local_store_js_1.saveStore)(store);
25
- (0, formatting_js_1.printResult)(result);
36
+ const tokenWindows = (0, local_store_js_1.computeTokenWindows)(store.tokenLog);
37
+ (0, formatting_js_1.printResult)(result, tokenWindows);
26
38
  }
27
39
  //# sourceMappingURL=analyze.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":";;AAIA,gCAwBC;AA5BD,+DAA8E;AAC9E,yDAAkE;AAClE,0DAAqD;AAE9C,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC;IAErF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC;IAEpD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,2BAAU,GAAE,CAAC;IAChC,MAAM,MAAM,GAAG,IAAA,yBAAW,EAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC;IAE/E,MAAM,KAAK,GAAG,IAAA,0BAAS,GAAE,CAAC;IAC1B,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,IAAA,0BAAS,EAAC,KAAK,CAAC,CAAC;IAEjB,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":";;AAIA,gCAsCC;AA1CD,+DAAmH;AACnH,yDAAkE;AAClE,0DAAqD;AAE9C,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC;IAErF,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC;IAEpD,wDAAwD;IACxD,MAAM,KAAK,GAAG,IAAA,0BAAS,GAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACpD,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzB,KAAK,CAAC,gBAAgB,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACpC,IAAA,0BAAS,EAAC,KAAK,CAAC,CAAC;IAEjB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,2BAAU,GAAE,CAAC;IAChC,MAAM,MAAM,GAAG,IAAA,yBAAW,EAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC;IAE/E,+CAA+C;IAC/C,IAAA,+BAAc,EAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,SAAS,EAAE,CAAC,CAAC,OAAO;QACpB,MAAM,EAAE,CAAC,CAAC,WAAW;KACtB,CAAC,CAAC,CAAC,CAAC;IAEL,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,IAAA,0BAAS,EAAC,KAAK,CAAC,CAAC;IAEjB,MAAM,YAAY,GAAG,IAAA,oCAAmB,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAA,2BAAW,EAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/badge.ts"],"names":[],"mappings":"AAKA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAiB7C"}
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/badge.ts"],"names":[],"mappings":"AAMA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAsB7C"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.cmdBadge = cmdBadge;
4
4
  const node_fs_1 = require("node:fs");
5
5
  const svg_js_1 = require("../../renderer/svg.js");
6
+ const animated_svg_js_1 = require("../../renderer/animated-svg.js");
6
7
  const local_store_js_1 = require("../../store/local-store.js");
7
8
  const locale_js_1 = require("../utils/locale.js");
8
9
  function cmdBadge(args) {
@@ -11,14 +12,19 @@ function cmdBadge(args) {
11
12
  console.log("No analysis data. Run 'cc-proficiency analyze' first.");
12
13
  return;
13
14
  }
14
- const svg = (0, svg_js_1.renderBadge)(store.lastResult, (0, locale_js_1.getConfigLocale)());
15
+ const animated = args.includes("--animated");
16
+ const locale = (0, locale_js_1.getConfigLocale)();
17
+ const tokenWindows = (0, local_store_js_1.computeTokenWindows)(store.tokenLog);
18
+ const svg = animated
19
+ ? (0, animated_svg_js_1.renderAnimatedBadge)(store.lastResult, locale, tokenWindows)
20
+ : (0, svg_js_1.renderBadge)(store.lastResult, locale, tokenWindows);
15
21
  const outputIdx = args.indexOf("--output");
16
22
  if (outputIdx !== -1 && args[outputIdx + 1]) {
17
23
  (0, node_fs_1.writeFileSync)(args[outputIdx + 1], svg, "utf-8");
18
24
  console.log(`Badge written to ${args[outputIdx + 1]}`);
19
25
  }
20
26
  else {
21
- const path = (0, local_store_js_1.saveBadge)(svg);
27
+ const path = animated ? (0, local_store_js_1.saveAnimatedBadge)(svg) : (0, local_store_js_1.saveBadge)(svg);
22
28
  console.log(`Badge saved to ${path}`);
23
29
  }
24
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/cli/commands/badge.ts"],"names":[],"mappings":";;AAKA,4BAiBC;AAtBD,qCAAwC;AACxC,kDAAoD;AACpD,+DAAkE;AAClE,kDAAqD;AAErD,SAAgB,QAAQ,CAAC,IAAc;IACrC,MAAM,KAAK,GAAG,IAAA,0BAAS,GAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,oBAAW,EAAC,KAAK,CAAC,UAAU,EAAE,IAAA,2BAAe,GAAE,CAAC,CAAC;IAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5C,IAAA,uBAAa,EAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,IAAA,0BAAS,EAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../../src/cli/commands/badge.ts"],"names":[],"mappings":";;AAMA,4BAsBC;AA5BD,qCAAwC;AACxC,kDAAoD;AACpD,oEAAqE;AACrE,+DAA0G;AAC1G,kDAAqD;AAErD,SAAgB,QAAQ,CAAC,IAAc;IACrC,MAAM,KAAK,GAAG,IAAA,0BAAS,GAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAA,2BAAe,GAAE,CAAC;IACjC,MAAM,YAAY,GAAG,IAAA,oCAAmB,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,QAAQ;QAClB,CAAC,CAAC,IAAA,qCAAmB,EAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC;QAC7D,CAAC,CAAC,IAAA,oBAAW,EAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAExD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5C,IAAA,uBAAa,EAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAA,kCAAiB,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAA,0BAAS,EAAC,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA+B9C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAiC9C"}
@@ -29,6 +29,10 @@ function cmdConfig(args) {
29
29
  config.public = value === "true";
30
30
  else if (key === "locale")
31
31
  config.locale = value;
32
+ else if (key === "leaderboard")
33
+ config.leaderboard = value === "true";
34
+ else if (key === "publicGistId")
35
+ config.publicGistId = value;
32
36
  else {
33
37
  console.log(`Unknown key: ${key}`);
34
38
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":";;AAEA,8BA+BC;AAjCD,+DAAoE;AAEpE,SAAgB,SAAS,CAAC,IAAc;IACtC,MAAM,MAAM,GAAG,IAAA,2BAAU,GAAE,CAAC;IAE5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAwB,CAAC;QAC3C,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAC1B,IAAI,GAAG,KAAK,UAAU;QAAE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;SAC3C,IAAI,GAAG,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;SAC5C,IAAI,GAAG,KAAK,YAAY;QAAE,MAAM,CAAC,UAAU,GAAG,KAAK,KAAK,MAAM,CAAC;SAC/D,IAAI,GAAG,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC;SACvD,IAAI,GAAG,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;SAC5C,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAA,2BAAU,EAAC,MAAM,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":";;AAEA,8BAiCC;AAnCD,+DAAoE;AAEpE,SAAgB,SAAS,CAAC,IAAc;IACtC,MAAM,MAAM,GAAG,IAAA,2BAAU,GAAE,CAAC;IAE5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAwB,CAAC;QAC3C,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAC1B,IAAI,GAAG,KAAK,UAAU;QAAE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;SAC3C,IAAI,GAAG,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;SAC5C,IAAI,GAAG,KAAK,YAAY;QAAE,MAAM,CAAC,UAAU,GAAG,KAAK,KAAK,MAAM,CAAC;SAC/D,IAAI,GAAG,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC;SACvD,IAAI,GAAG,KAAK,QAAQ;QAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;SAC5C,IAAI,GAAG,KAAK,aAAa;QAAE,MAAM,CAAC,WAAW,GAAG,KAAK,KAAK,MAAM,CAAC;SACjE,IAAI,GAAG,KAAK,cAAc;QAAE,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;SACxD,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAA,2BAAU,EAAC,MAAM,CAAC,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC;AACvC,CAAC"}
@@ -38,7 +38,7 @@ function cmdExplain() {
38
38
  if (f.mcpServers.length > 0)
39
39
  console.log(` MCP: ${f.mcpServers.join(", ")}`);
40
40
  console.log(` Tools: ${f.topTools.map((t) => `${t.name} (${t.count})`).join(", ")} +${f.uniqueToolCount - f.topTools.length} more`);
41
- console.log(` Flags: ${f.usedPlanMode ? "\u2713 Plan" : "\u2717 Plan"} ${f.hasMemory ? "\u2713 Memory" : "\u2717 Memory"} ${f.hasRules ? "\u2713 Rules" : "\u2717 Rules"}`);
41
+ console.log(` Flags: ${f.usedPlanMode ? "\u2713 Plan" : "\u2717 Plan"} ${f.hasMemory ? "\u2713 Memory" : "\u2717 Memory"} ${f.hasRules ? "\u2713 Rules" : "\u2717 Rules"} ${f.hasAgents ? "\u2713 Agents" : "\u2717 Agents"} ${f.hasSkills ? "\u2713 Skills" : "\u2717 Skills"}`);
42
42
  console.log(`\n ${result.sessionCount} sessions \u00B7 ${result.projectCount} projects\n`);
43
43
  }
44
44
  //# sourceMappingURL=explain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../src/cli/commands/explain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../src/cli/commands/explain.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAQA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAuD7C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AASA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA6D7C"}
@@ -5,6 +5,7 @@ const svg_js_1 = require("../../renderer/svg.js");
5
5
  const local_store_js_1 = require("../../store/local-store.js");
6
6
  const queue_js_1 = require("../../store/queue.js");
7
7
  const uploader_js_1 = require("../../gist/uploader.js");
8
+ const locales_js_1 = require("../../i18n/locales.js");
8
9
  const hooks_js_1 = require("../services/hooks.js");
9
10
  const locale_js_1 = require("../utils/locale.js");
10
11
  const analyze_js_1 = require("./analyze.js");
@@ -24,6 +25,11 @@ async function cmdInit() {
24
25
  console.log(" Badge will be saved locally to: " + (0, local_store_js_1.getBadgePath)());
25
26
  console.log(" To enable auto-upload: gh auth login && cc-proficiency init\n");
26
27
  }
28
+ // Auto-detect locale from environment (LANG/LC_ALL)
29
+ if (!config.locale) {
30
+ config.locale = (0, locales_js_1.detectLocale)();
31
+ console.log(` Locale: ${config.locale}`);
32
+ }
27
33
  (0, hooks_js_1.injectHook)();
28
34
  console.log(" \u2713 Hook injected into ~/.claude/settings.json");
29
35
  console.log("\n Running initial analysis...");
@@ -32,7 +38,7 @@ async function cmdInit() {
32
38
  const store = (0, local_store_js_1.loadStore)();
33
39
  let badgeSvg = '<svg xmlns="http://www.w3.org/2000/svg"><text>No data</text></svg>';
34
40
  if (store.lastResult) {
35
- badgeSvg = (0, svg_js_1.renderBadge)(store.lastResult, (0, locale_js_1.getConfigLocale)());
41
+ badgeSvg = (0, svg_js_1.renderBadge)(store.lastResult, (0, locale_js_1.getConfigLocale)(), (0, local_store_js_1.computeTokenWindows)(store.tokenLog));
36
42
  (0, local_store_js_1.saveBadge)(badgeSvg);
37
43
  }
38
44
  if (config.username && (0, uploader_js_1.isGhAuthenticated)() && !config.gistId) {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function cmdLeaderboard(args: string[]): void;
2
+ //# sourceMappingURL=leaderboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaderboard.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/leaderboard.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAgDnD"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cmdLeaderboard = cmdLeaderboard;
4
+ const leaderboard_js_1 = require("../services/leaderboard.js");
5
+ const local_store_js_1 = require("../../store/local-store.js");
6
+ function cmdLeaderboard(args) {
7
+ // Parse --sort and --limit
8
+ let sortBy = "avg";
9
+ let limit = 20;
10
+ for (let i = 0; i < args.length; i++) {
11
+ const arg = args[i];
12
+ if (arg.startsWith("--sort=")) {
13
+ sortBy = arg.slice(7);
14
+ }
15
+ else if (arg.startsWith("--limit=")) {
16
+ limit = parseInt(arg.slice(8), 10) || 20;
17
+ }
18
+ }
19
+ const { entries, fromCache, skipped } = (0, leaderboard_js_1.fetchLeaderboard)(sortBy, limit);
20
+ if (entries.length === 0) {
21
+ console.log("Leaderboard unavailable. Try again later.");
22
+ return;
23
+ }
24
+ const config = (0, local_store_js_1.loadConfig)();
25
+ const myUsername = config.username;
26
+ console.log(`\n cc-proficiency Leaderboard (${entries.length} users)`);
27
+ console.log(" " + "\u2500".repeat(58));
28
+ console.log(" # User Avg CC Tool Agen Prmp Ctx");
29
+ console.log(" " + "\u2500".repeat(58));
30
+ for (let i = 0; i < entries.length; i++) {
31
+ const e = entries[i];
32
+ const rank = String(i + 1).padStart(3);
33
+ const user = `@${e.username}`.padEnd(16);
34
+ const avg = String(e.averageScore).padStart(3);
35
+ const scores = getDomainScores(e);
36
+ const marker = e.username === myUsername ? " \u25C4" : "";
37
+ console.log(` ${rank} ${user} ${avg} ${scores}${marker}`);
38
+ }
39
+ console.log(" " + "\u2500".repeat(58));
40
+ const cacheNote = fromCache ? " (cached)" : "";
41
+ const skipNote = skipped > 0 ? ` (${skipped} skipped)` : "";
42
+ console.log(` ${entries.length} users${skipNote} \u00B7 Updated ${getTimeAgo(fromCache)}${cacheNote}`);
43
+ console.log("\n --sort=<avg|cc-mastery|tool-mcp|agentic|prompt-craft|context-mgmt|hours|streak>");
44
+ console.log(" --limit=N (default 20)\n");
45
+ }
46
+ function getDomainScores(entry) {
47
+ const ids = ["cc-mastery", "tool-mcp", "agentic", "prompt-craft", "context-mgmt"];
48
+ return ids.map((id) => {
49
+ const d = entry.domains.find((x) => x.id === id);
50
+ return String(d?.score ?? 0).padStart(4);
51
+ }).join(" ");
52
+ }
53
+ function getTimeAgo(fromCache) {
54
+ if (!fromCache)
55
+ return "just now";
56
+ return "recently";
57
+ }
58
+ //# sourceMappingURL=leaderboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leaderboard.js","sourceRoot":"","sources":["../../../src/cli/commands/leaderboard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/process.ts"],"names":[],"mappings":"AAYA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA4EhD"}
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/process.ts"],"names":[],"mappings":"AAcA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAwGhD"}