cc-proficiency 0.1.0
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.
- package/.claude-plugin/plugin.json +11 -0
- package/LICENSE +201 -0
- package/README.md +345 -0
- package/README.zh-CN.md +284 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +543 -0
- package/dist/cli.js.map +1 -0
- package/dist/gist/uploader.d.ts +26 -0
- package/dist/gist/uploader.d.ts.map +1 -0
- package/dist/gist/uploader.js +99 -0
- package/dist/gist/uploader.js.map +1 -0
- package/dist/hooks/session-end.js +64 -0
- package/dist/i18n/locales.d.ts +30 -0
- package/dist/i18n/locales.d.ts.map +1 -0
- package/dist/i18n/locales.js +64 -0
- package/dist/i18n/locales.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/config-parser.d.ts +25 -0
- package/dist/parsers/config-parser.d.ts.map +1 -0
- package/dist/parsers/config-parser.js +262 -0
- package/dist/parsers/config-parser.js.map +1 -0
- package/dist/parsers/history-parser.d.ts +13 -0
- package/dist/parsers/history-parser.d.ts.map +1 -0
- package/dist/parsers/history-parser.js +50 -0
- package/dist/parsers/history-parser.js.map +1 -0
- package/dist/parsers/normalizer.d.ts +8 -0
- package/dist/parsers/normalizer.d.ts.map +1 -0
- package/dist/parsers/normalizer.js +105 -0
- package/dist/parsers/normalizer.js.map +1 -0
- package/dist/parsers/transcript-parser.d.ts +23 -0
- package/dist/parsers/transcript-parser.d.ts.map +1 -0
- package/dist/parsers/transcript-parser.js +112 -0
- package/dist/parsers/transcript-parser.js.map +1 -0
- package/dist/renderer/svg.d.ts +10 -0
- package/dist/renderer/svg.d.ts.map +1 -0
- package/dist/renderer/svg.js +209 -0
- package/dist/renderer/svg.js.map +1 -0
- package/dist/scoring/curves.d.ts +34 -0
- package/dist/scoring/curves.d.ts.map +1 -0
- package/dist/scoring/curves.js +60 -0
- package/dist/scoring/curves.js.map +1 -0
- package/dist/scoring/engine.d.ts +16 -0
- package/dist/scoring/engine.d.ts.map +1 -0
- package/dist/scoring/engine.js +137 -0
- package/dist/scoring/engine.js.map +1 -0
- package/dist/scoring/rule-engine.d.ts +30 -0
- package/dist/scoring/rule-engine.d.ts.map +1 -0
- package/dist/scoring/rule-engine.js +151 -0
- package/dist/scoring/rule-engine.js.map +1 -0
- package/dist/scoring/rules.d.ts +32 -0
- package/dist/scoring/rules.d.ts.map +1 -0
- package/dist/scoring/rules.js +443 -0
- package/dist/scoring/rules.js.map +1 -0
- package/dist/scoring/signals.d.ts +7 -0
- package/dist/scoring/signals.d.ts.map +1 -0
- package/dist/scoring/signals.js +245 -0
- package/dist/scoring/signals.js.map +1 -0
- package/dist/store/local-store.d.ts +12 -0
- package/dist/store/local-store.d.ts.map +1 -0
- package/dist/store/local-store.js +107 -0
- package/dist/store/local-store.js.map +1 -0
- package/dist/store/queue.d.ts +24 -0
- package/dist/store/queue.d.ts.map +1 -0
- package/dist/store/queue.js +105 -0
- package/dist/store/queue.js.map +1 -0
- package/dist/types.d.ts +264 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/ci-detect.d.ts +6 -0
- package/dist/utils/ci-detect.d.ts.map +1 -0
- package/dist/utils/ci-detect.js +19 -0
- package/dist/utils/ci-detect.js.map +1 -0
- package/hooks/hooks.json +15 -0
- package/hooks/session-end.ts +71 -0
- package/hooks/tsconfig.json +13 -0
- package/package.json +43 -0
- package/skills/proficiency/SKILL.md +15 -0
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://img.shields.io/badge/Claude_Code-能力徽章-7c3aed?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAyTDIgN2wxMCA1IDEwLTV6Ii8+PHBhdGggZD0iTTIgMTdsMTAgNSAxMC01Ii8+PHBhdGggZD0iTTIgMTJsMTAgNSAxMC01Ii8+PC9zdmc+" alt="cc-proficiency" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>为你的 Claude Code 使用生成能力徽章,对齐 Claude Certified Architect 认证考试的 5 个领域。</strong>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/cc-proficiency"><img src="https://img.shields.io/npm/v/cc-proficiency?style=flat-square&color=cb3837&logo=npm" alt="npm 版本" /></a>
|
|
11
|
+
<a href="https://www.npmjs.com/package/cc-proficiency"><img src="https://img.shields.io/npm/dm/cc-proficiency?style=flat-square&color=cb3837&logo=npm" alt="npm 下载量" /></a>
|
|
12
|
+
<a href="https://github.com/Z-M-Huang/cc-proficiency"><img src="https://img.shields.io/github/stars/Z-M-Huang/cc-proficiency?style=flat-square&logo=github" alt="GitHub stars" /></a>
|
|
13
|
+
<a href="https://github.com/Z-M-Huang/cc-proficiency/issues"><img src="https://img.shields.io/github/issues/Z-M-Huang/cc-proficiency?style=flat-square&logo=github" alt="GitHub issues" /></a>
|
|
14
|
+
<a href="https://github.com/Z-M-Huang/cc-proficiency/blob/main/LICENSE"><img src="https://img.shields.io/github/license/Z-M-Huang/cc-proficiency?style=flat-square" alt="许可证" /></a>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
<p align="center">
|
|
18
|
+
<img src="https://img.shields.io/badge/node-%3E%3D18.0.0-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node.js" />
|
|
19
|
+
<img src="https://img.shields.io/badge/TypeScript-5.7+-3178c6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript" />
|
|
20
|
+
<img src="https://img.shields.io/badge/zero-runtime_deps-22c55e?style=flat-square" alt="零运行时依赖" />
|
|
21
|
+
<img src="https://img.shields.io/badge/coverage-96%25-brightgreen?style=flat-square" alt="测试覆盖率" />
|
|
22
|
+
<a href="https://visitcount.itsvg.in"><img src="https://visitcount.itsvg.in/api?id=cc-proficiency&label=访客&color=6&icon=5&pretty=true" alt="访客" /></a>
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
<p align="center">
|
|
26
|
+
<a href="#安装">安装</a> ·
|
|
27
|
+
<a href="#使用方法">使用</a> ·
|
|
28
|
+
<a href="#嵌入到你的-readme">嵌入</a> ·
|
|
29
|
+
<a href="#评分系统">评分</a> ·
|
|
30
|
+
<a href="#隐私">隐私</a> ·
|
|
31
|
+
<a href="./README.md">English</a>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 功能介绍
|
|
37
|
+
|
|
38
|
+
使用**基于规则的引擎**在本地分析你的 Claude Code 会话记录,从 5 个领域评估你的使用模式:
|
|
39
|
+
|
|
40
|
+
| 领域 | 权重 | 衡量内容 |
|
|
41
|
+
|------|------|---------|
|
|
42
|
+
| **CC 掌握** | 20% | CLAUDE.md、钩子、插件、计划模式、技能、规则文件 |
|
|
43
|
+
| **工具 & MCP** | 20% | 调查链、MCP 服务器、LSP、选择性编辑 |
|
|
44
|
+
| **智能体** | 20% | 子代理、并行执行、工作树、任务管理 |
|
|
45
|
+
| **提示词** | 20% | 结构化请求、代码块、错误跟踪、迭代优化 |
|
|
46
|
+
| **上下文** | 20% | 跨会话记忆、CLAUDE.md 更新、持续项目 |
|
|
47
|
+
|
|
48
|
+
另外还有 **8 个特性迷你条**(钩子、插件、技能、MCP、代理、计划、记忆、规则),以热力图形式展示各特性的使用程度。
|
|
49
|
+
|
|
50
|
+
<details>
|
|
51
|
+
<summary><strong>输出示例</strong></summary>
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Claude Code Proficiency — @username
|
|
55
|
+
────────────────────────────────────────
|
|
56
|
+
CC Mastery ███████████████░░░░░ 77 ●
|
|
57
|
+
Tool & MCP ███████████████████░ 96 ◐
|
|
58
|
+
Agentic ██████████████░░░░░░ 69 ◐
|
|
59
|
+
Prompt Craft ████████████████░░░░ 81 ◐
|
|
60
|
+
Context Mgmt ████████████████████ 100 ●
|
|
61
|
+
────────────────────────────────────────
|
|
62
|
+
[Hooks 100][Plugins 50][Skills 67][MCP 100]
|
|
63
|
+
[Agents 71][Plan 100][Memory 100][Rules 0]
|
|
64
|
+
────────────────────────────────────────
|
|
65
|
+
139 sessions · 4 projects
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
</details>
|
|
69
|
+
|
|
70
|
+
> **声明:** 这是一个非官方的使用评估工具,不代表 Anthropic 官方认证分数。与 Anthropic 无关联。
|
|
71
|
+
|
|
72
|
+
## 安装
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npm install -g cc-proficiency
|
|
76
|
+
cc-proficiency init
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`init` 会:
|
|
80
|
+
1. 检测你的 GitHub 用户名(通过 `gh` CLI)
|
|
81
|
+
2. 在 `~/.claude/settings.json` 中注入 Stop 钩子
|
|
82
|
+
3. 创建一个私有 GitHub Gist 用于存放徽章(如果 `gh` 已认证)
|
|
83
|
+
|
|
84
|
+
如果 `gh` 未安装或未认证,徽章将保存到本地 `~/.cc-proficiency/cc-proficiency.svg`。
|
|
85
|
+
|
|
86
|
+
## 使用方法
|
|
87
|
+
|
|
88
|
+
### 分析你的能力
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
$ cc-proficiency analyze --full
|
|
92
|
+
|
|
93
|
+
Running full analysis...
|
|
94
|
+
Claude Code Proficiency — @yourname
|
|
95
|
+
────────────────────────────────────────
|
|
96
|
+
CC Mastery ███████████████░░░░░ 77 ●
|
|
97
|
+
Tool & MCP ███████████████████░ 96 ◐
|
|
98
|
+
Agentic ██████████████░░░░░░ 69 ◐
|
|
99
|
+
Prompt Craft ████████████████░░░░ 81 ◐
|
|
100
|
+
Context Mgmt ████████████████████ 100 ●
|
|
101
|
+
────────────────────────────────────────
|
|
102
|
+
139 sessions · 4 projects
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 获取改进建议
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
$ cc-proficiency explain
|
|
109
|
+
|
|
110
|
+
Claude Code Proficiency — @yourname
|
|
111
|
+
|
|
112
|
+
Strengths:
|
|
113
|
+
Context Mgmt 100/100
|
|
114
|
+
Tool & MCP 96/100
|
|
115
|
+
Prompt Craft 81/100
|
|
116
|
+
|
|
117
|
+
Areas to Improve:
|
|
118
|
+
Agentic (69/100)
|
|
119
|
+
→ 使用不同类型的子代理、尝试并行代理和工作树
|
|
120
|
+
CC Mastery (77/100)
|
|
121
|
+
→ 增强 CLAUDE.md、添加带匹配器的钩子、创建规则文件
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 生成和推送徽章
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# 保存到本地
|
|
128
|
+
$ cc-proficiency badge --output my-badge.svg
|
|
129
|
+
|
|
130
|
+
# 推送到 GitHub Gist
|
|
131
|
+
$ cc-proficiency push
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 切换到中文徽章
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
cc-proficiency config locale zh-CN
|
|
138
|
+
cc-proficiency badge
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 自动更新(零操作)
|
|
142
|
+
|
|
143
|
+
`init` 之后,每次 Claude Code 会话结束时 Stop 钩子自动运行:
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
正常使用 Claude Code
|
|
147
|
+
→ 会话结束
|
|
148
|
+
→ 钩子将会话加入队列(<1秒,无感知)
|
|
149
|
+
→ 后台进程分析 + 更新徽章
|
|
150
|
+
→ README 中的徽章自动反映最新分数
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## 嵌入到你的 README
|
|
154
|
+
|
|
155
|
+
运行 `cc-proficiency init` 后,在 README 中添加:
|
|
156
|
+
|
|
157
|
+
```markdown
|
|
158
|
+

|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## 渐进式徽章
|
|
162
|
+
|
|
163
|
+
徽章根据可用数据量自动调整:
|
|
164
|
+
|
|
165
|
+
| 阶段 | 会话数 | 展示内容 |
|
|
166
|
+
|------|--------|---------|
|
|
167
|
+
| **校准中** | 0–2 | 配置检查清单 + 进度 |
|
|
168
|
+
| **初步结果** | 3–9 | 5 个领域条 + 8 个特性迷你条(低置信度 ○) |
|
|
169
|
+
| **完整徽章** | 10+ | 完整领域条、特性热力图、置信度圆点(● ◐ ○) |
|
|
170
|
+
|
|
171
|
+
## 评分系统
|
|
172
|
+
|
|
173
|
+
### 基于规则的引擎
|
|
174
|
+
|
|
175
|
+
cc-proficiency 使用 **~53 条模式匹配规则**,而不是简单计数:
|
|
176
|
+
|
|
177
|
+
| 级别 | 分值 | 示例规则 |
|
|
178
|
+
|------|------|---------|
|
|
179
|
+
| **入门** | 5 分 | 拥有全局 CLAUDE.md |
|
|
180
|
+
| **中级** | 10-15 分 | 调查链:Grep → Read → Edit |
|
|
181
|
+
| **高级** | 15-25 分 | 使用不同类型的并行子代理 |
|
|
182
|
+
| **反模式** | -5 至 -10 分 | 5+ 并行工具且错误率 >50% |
|
|
183
|
+
|
|
184
|
+
### 5 个领域条
|
|
185
|
+
|
|
186
|
+
| 领域 | 衡量内容 |
|
|
187
|
+
|------|---------|
|
|
188
|
+
| **CC 掌握** | CLAUDE.md 结构、带匹配器的钩子、插件、计划模式、技能、规则文件 |
|
|
189
|
+
| **工具 & MCP** | 调查链、先读后改、工具多样性、MCP 服务器、LSP、选择性编辑 |
|
|
190
|
+
| **智能体** | 子代理类型多样性、并行代理、后台运行、工作树、任务管理 |
|
|
191
|
+
| **提示词** | 结构化请求、代码块、错误跟踪、文件引用、迭代优化 |
|
|
192
|
+
| **上下文** | 活跃记忆文件、CLAUDE.md 更新、持续项目、会话深度 |
|
|
193
|
+
|
|
194
|
+
### 8 个特性迷你条
|
|
195
|
+
|
|
196
|
+
领域条下方,热力图行展示各特性的采用程度:
|
|
197
|
+
|
|
198
|
+
`钩子 · 插件 · 技能 · MCP · 代理 · 计划 · 记忆 · 规则`
|
|
199
|
+
|
|
200
|
+
### 桶聚合与上限
|
|
201
|
+
|
|
202
|
+
| 桶 | 最大分值 | 来源 |
|
|
203
|
+
|----|---------|------|
|
|
204
|
+
| **配置** | 25 分 | 配置规则(CLAUDE.md、钩子、插件 —— 立即可用) |
|
|
205
|
+
| **行为** | 75 分 | 行为规则(会话模式 —— 随时间增长) |
|
|
206
|
+
| **惩罚** | -15 分上限 | 反模式扣分 |
|
|
207
|
+
|
|
208
|
+
### 阶段感知权重
|
|
209
|
+
|
|
210
|
+
| 阶段 | 会话数 | 配置缩放 | 行为缩放 |
|
|
211
|
+
|------|--------|---------|---------|
|
|
212
|
+
| 校准中 | 0–2 | 2.0× | 0.8× |
|
|
213
|
+
| 初步 | 3–9 | 1.5× | 1.0× |
|
|
214
|
+
| 完整 | 10+ | 1.0× | 1.15× |
|
|
215
|
+
|
|
216
|
+
### 防作弊
|
|
217
|
+
|
|
218
|
+
- 规则**按会话上限触发** —— 重复相同工具 100 次无效
|
|
219
|
+
- **反模式规则**对不良习惯扣分
|
|
220
|
+
- 每条规则有 `maxPerSession` —— 调查链每会话上限 3 次
|
|
221
|
+
- 配置分数**上限 25** —— 仅安装插件无法达到满分
|
|
222
|
+
|
|
223
|
+
## 隐私
|
|
224
|
+
|
|
225
|
+
| 关注点 | 处理方式 |
|
|
226
|
+
|--------|---------|
|
|
227
|
+
| **数据位置** | 所有分析**在本地机器**上进行 |
|
|
228
|
+
| **存储内容** | 仅存储聚合计数、比率和布尔标志 —— 无文件路径、代码或提示词 |
|
|
229
|
+
| **Gist 可见性** | **默认私有**(秘密 URL,不在个人资料中列出) |
|
|
230
|
+
| **离线模式** | 无需 `gh` CLI 即可完全离线工作(仅本地模式) |
|
|
231
|
+
| **CI/CD** | 非交互式会话自动检测并排除 |
|
|
232
|
+
|
|
233
|
+
## 命令
|
|
234
|
+
|
|
235
|
+
| 命令 | 描述 |
|
|
236
|
+
|------|------|
|
|
237
|
+
| `cc-proficiency init` | 设置钩子和 Gist |
|
|
238
|
+
| `cc-proficiency analyze [--full]` | 解析会话并计算分数 |
|
|
239
|
+
| `cc-proficiency process` | 处理钩子队列中的会话 |
|
|
240
|
+
| `cc-proficiency badge [--output <文件>]` | 生成 SVG 徽章 |
|
|
241
|
+
| `cc-proficiency push` | 上传徽章到 Gist |
|
|
242
|
+
| `cc-proficiency explain` | 显示分数驱动因素和建议 |
|
|
243
|
+
| `cc-proficiency config [键] [值]` | 查看/设置配置 |
|
|
244
|
+
| `cc-proficiency config locale zh-CN` | 切换到中文徽章 |
|
|
245
|
+
| `cc-proficiency uninstall` | 移除钩子和清理数据 |
|
|
246
|
+
|
|
247
|
+
## 架构
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
Stop 钩子触发 (< 1秒)
|
|
251
|
+
→ 将会话路径写入 ~/.cc-proficiency/queue.jsonl
|
|
252
|
+
→ 启动 `cc-proficiency process` 作为后台子进程
|
|
253
|
+
|
|
254
|
+
cc-proficiency process
|
|
255
|
+
→ 获取 queue.lock(超过60秒视为过期 → 强制获取)
|
|
256
|
+
→ 按 session_id 去重
|
|
257
|
+
→ 解析会话记录(流式 JSONL,逐行错误处理)
|
|
258
|
+
→ 触发规则 → 计算分数 → 渲染 SVG
|
|
259
|
+
→ 推送到 Gist(如已配置)或保存到本地
|
|
260
|
+
→ 原子替换队列
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## 贡献
|
|
264
|
+
|
|
265
|
+
欢迎贡献!请先开一个 issue 讨论你想要做的改动。
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
git clone https://github.com/Z-M-Huang/cc-proficiency.git
|
|
269
|
+
cd cc-proficiency
|
|
270
|
+
npm install
|
|
271
|
+
npm test # 146 tests
|
|
272
|
+
npm run build # 编译到 dist/
|
|
273
|
+
npm run typecheck # tsc --noEmit
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## 许可证
|
|
277
|
+
|
|
278
|
+
[Apache 2.0](LICENSE)
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
<p align="center">
|
|
283
|
+
<sub>使用 Claude Code 构建。与 Anthropic 无关联。</sub>
|
|
284
|
+
</p>
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|