cc-proficiency 0.2.2 → 0.2.4

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 (101) hide show
  1. package/README.md +2 -0
  2. package/dist/cli/commands/achievements.d.ts +2 -0
  3. package/dist/cli/commands/achievements.d.ts.map +1 -0
  4. package/dist/cli/commands/achievements.js +51 -0
  5. package/dist/cli/commands/achievements.js.map +1 -0
  6. package/dist/cli/commands/analyze.d.ts +2 -0
  7. package/dist/cli/commands/analyze.d.ts.map +1 -0
  8. package/dist/cli/commands/analyze.js +27 -0
  9. package/dist/cli/commands/analyze.js.map +1 -0
  10. package/dist/cli/commands/badge.d.ts +2 -0
  11. package/dist/cli/commands/badge.d.ts.map +1 -0
  12. package/dist/cli/commands/badge.js +25 -0
  13. package/dist/cli/commands/badge.js.map +1 -0
  14. package/dist/cli/commands/config.d.ts +2 -0
  15. package/dist/cli/commands/config.d.ts.map +1 -0
  16. package/dist/cli/commands/config.js +39 -0
  17. package/dist/cli/commands/config.js.map +1 -0
  18. package/dist/cli/commands/explain.d.ts +2 -0
  19. package/dist/cli/commands/explain.d.ts.map +1 -0
  20. package/dist/cli/commands/explain.js +44 -0
  21. package/dist/cli/commands/explain.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts +2 -0
  23. package/dist/cli/commands/init.d.ts.map +1 -0
  24. package/dist/cli/commands/init.js +63 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/commands/process.d.ts +2 -0
  27. package/dist/cli/commands/process.d.ts.map +1 -0
  28. package/dist/cli/commands/process.js +76 -0
  29. package/dist/cli/commands/process.js.map +1 -0
  30. package/dist/cli/commands/push.d.ts +2 -0
  31. package/dist/cli/commands/push.d.ts.map +1 -0
  32. package/dist/cli/commands/push.js +8 -0
  33. package/dist/cli/commands/push.js.map +1 -0
  34. package/dist/cli/commands/status.d.ts +2 -0
  35. package/dist/cli/commands/status.d.ts.map +1 -0
  36. package/dist/cli/commands/status.js +53 -0
  37. package/dist/cli/commands/status.js.map +1 -0
  38. package/dist/cli/commands/uninstall.d.ts +2 -0
  39. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  40. package/dist/cli/commands/uninstall.js +27 -0
  41. package/dist/cli/commands/uninstall.js.map +1 -0
  42. package/dist/cli/index.d.ts +3 -0
  43. package/dist/cli/index.d.ts.map +1 -0
  44. package/dist/cli/index.js +86 -0
  45. package/dist/cli/index.js.map +1 -0
  46. package/dist/cli/services/hooks.d.ts +3 -0
  47. package/dist/cli/services/hooks.d.ts.map +1 -0
  48. package/dist/cli/services/hooks.js +68 -0
  49. package/dist/cli/services/hooks.js.map +1 -0
  50. package/dist/cli/services/publishing.d.ts +2 -0
  51. package/dist/cli/services/publishing.d.ts.map +1 -0
  52. package/dist/cli/services/publishing.js +87 -0
  53. package/dist/cli/services/publishing.js.map +1 -0
  54. package/dist/cli/services/sessions.d.ts +11 -0
  55. package/dist/cli/services/sessions.d.ts.map +1 -0
  56. package/dist/cli/services/sessions.js +78 -0
  57. package/dist/cli/services/sessions.js.map +1 -0
  58. package/dist/cli/utils/formatting.d.ts +5 -0
  59. package/dist/cli/utils/formatting.d.ts.map +1 -0
  60. package/dist/cli/utils/formatting.js +64 -0
  61. package/dist/cli/utils/formatting.js.map +1 -0
  62. package/dist/cli/utils/locale.d.ts +3 -0
  63. package/dist/cli/utils/locale.d.ts.map +1 -0
  64. package/dist/cli/utils/locale.js +14 -0
  65. package/dist/cli/utils/locale.js.map +1 -0
  66. package/dist/gist/uploader.d.ts +12 -0
  67. package/dist/gist/uploader.d.ts.map +1 -1
  68. package/dist/gist/uploader.js +72 -0
  69. package/dist/gist/uploader.js.map +1 -1
  70. package/dist/hooks/session-end.js +3 -2
  71. package/dist/parsers/config-parser.d.ts.map +1 -1
  72. package/dist/parsers/config-parser.js +170 -164
  73. package/dist/parsers/config-parser.js.map +1 -1
  74. package/dist/renderer/svg.d.ts.map +1 -1
  75. package/dist/renderer/svg.js +10 -4
  76. package/dist/renderer/svg.js.map +1 -1
  77. package/dist/scoring/engine.d.ts.map +1 -1
  78. package/dist/scoring/engine.js +12 -0
  79. package/dist/scoring/engine.js.map +1 -1
  80. package/dist/scoring/rule-engine.d.ts.map +1 -1
  81. package/dist/scoring/rule-engine.js.map +1 -1
  82. package/dist/scoring/signals.js +2 -2
  83. package/dist/scoring/signals.js.map +1 -1
  84. package/dist/store/achievements.d.ts +16 -0
  85. package/dist/store/achievements.d.ts.map +1 -0
  86. package/dist/store/achievements.js +153 -0
  87. package/dist/store/achievements.js.map +1 -0
  88. package/dist/store/local-store.d.ts.map +1 -1
  89. package/dist/store/remote-store.d.ts +42 -0
  90. package/dist/store/remote-store.d.ts.map +1 -0
  91. package/dist/store/remote-store.js +185 -0
  92. package/dist/store/remote-store.js.map +1 -0
  93. package/dist/types.d.ts +69 -0
  94. package/dist/types.d.ts.map +1 -1
  95. package/hooks/session-end.ts +4 -3
  96. package/package.json +8 -3
  97. package/dist/cli.d.ts +0 -3
  98. package/dist/cli.d.ts.map +0 -1
  99. package/dist/cli.js +0 -616
  100. package/dist/cli.js.map +0 -1
  101. package/skills/proficiency/SKILL.md +0 -15
package/dist/cli.js DELETED
@@ -1,616 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const node_fs_1 = require("node:fs");
5
- const node_path_1 = require("node:path");
6
- const node_os_1 = require("node:os");
7
- const transcript_parser_js_1 = require("./parsers/transcript-parser.js");
8
- const config_parser_js_1 = require("./parsers/config-parser.js");
9
- const engine_js_1 = require("./scoring/engine.js");
10
- const svg_js_1 = require("./renderer/svg.js");
11
- const locales_js_1 = require("./i18n/locales.js");
12
- const local_store_js_1 = require("./store/local-store.js");
13
- const queue_js_1 = require("./store/queue.js");
14
- const uploader_js_1 = require("./gist/uploader.js");
15
- const CLAUDE_DIR = (0, node_path_1.join)((0, node_os_1.homedir)(), ".claude");
16
- function getConfigLocale() {
17
- const config = (0, local_store_js_1.loadConfig)();
18
- if (config.locale === "zh-CN")
19
- return "zh-CN";
20
- if (config.locale === "en")
21
- return "en";
22
- return (0, locales_js_1.detectLocale)();
23
- }
24
- async function main() {
25
- const args = process.argv.slice(2);
26
- const command = args[0];
27
- switch (command) {
28
- case "init":
29
- return await cmdInit();
30
- case "analyze":
31
- return cmdAnalyze(args);
32
- case "process":
33
- return cmdProcess();
34
- case "badge":
35
- return cmdBadge(args);
36
- case "push":
37
- return cmdPush();
38
- case "explain":
39
- return cmdExplain();
40
- case "status":
41
- return cmdStatus();
42
- case "config":
43
- return cmdConfig(args.slice(1));
44
- case "uninstall":
45
- return cmdUninstall();
46
- case "version":
47
- console.log(`cc-proficiency v${getVersion()} (scoring ${engine_js_1.SCORING_VERSION})`);
48
- return;
49
- default:
50
- printUsage();
51
- return;
52
- }
53
- }
54
- function getVersion() {
55
- try {
56
- const pkg = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(__dirname, "..", "package.json"), "utf-8"));
57
- return pkg.version ?? "0.1.0";
58
- }
59
- catch {
60
- return "0.1.0";
61
- }
62
- }
63
- function printUsage() {
64
- console.log(`
65
- cc-proficiency — Claude Code Proficiency Badge Generator
66
-
67
- Commands:
68
- init Set up configuration and hooks
69
- analyze [--full] Analyze sessions and compute scores
70
- process Process queued sessions from hook
71
- badge [--output <f>] Generate SVG badge
72
- push Upload badge to GitHub Gist
73
- explain Show score drivers and improvement tips
74
- status Show hook activity, queue, and config
75
- config [key] [value] View or set configuration
76
- uninstall Remove hooks and clean up
77
- version Show version info
78
-
79
- Examples:
80
- cc-proficiency init
81
- cc-proficiency analyze --full
82
- cc-proficiency badge --output badge.svg
83
- cc-proficiency explain
84
- `);
85
- }
86
- // ── Init ──
87
- async function cmdInit() {
88
- console.log("Initializing cc-proficiency...\n");
89
- (0, queue_js_1.ensureStoreDir)();
90
- const config = (0, local_store_js_1.loadConfig)();
91
- // Detect GitHub user
92
- if ((0, uploader_js_1.isGhAuthenticated)()) {
93
- const username = (0, uploader_js_1.getGhUsername)();
94
- if (username) {
95
- config.username = username;
96
- console.log(` GitHub user: @${username}`);
97
- }
98
- }
99
- else {
100
- console.log(" ⚠ GitHub CLI not authenticated.");
101
- console.log(" Badge will be saved locally to: " + (0, local_store_js_1.getBadgePath)());
102
- console.log(" To enable auto-upload: gh auth login && cc-proficiency init\n");
103
- }
104
- // Inject hook into settings.json
105
- injectHook();
106
- console.log(" ✓ Hook injected into ~/.claude/settings.json");
107
- // Run analysis first (so we have a real badge before creating Gist)
108
- console.log("\n Running initial analysis...");
109
- (0, local_store_js_1.saveConfig)(config);
110
- await cmdAnalyze(["--full"]);
111
- // Generate the real badge SVG
112
- const store = (0, local_store_js_1.loadStore)();
113
- let badgeSvg = '<svg xmlns="http://www.w3.org/2000/svg"><text>No data</text></svg>';
114
- if (store.lastResult) {
115
- badgeSvg = (0, svg_js_1.renderBadge)(store.lastResult, getConfigLocale());
116
- (0, local_store_js_1.saveBadge)(badgeSvg);
117
- }
118
- // Create Gist with the REAL badge (not a placeholder)
119
- if (config.username && (0, uploader_js_1.isGhAuthenticated)() && !config.gistId) {
120
- console.log(" Creating private Gist with badge...");
121
- const result = (0, uploader_js_1.createGist)(badgeSvg, config.public);
122
- if (result.success && result.url) {
123
- config.gistId = result.url;
124
- const rawUrl = (0, uploader_js_1.getGistRawUrl)(config.username, result.url);
125
- console.log(` ✓ Gist created`);
126
- console.log(`\n Add to your README:`);
127
- console.log(` ![CC Proficiency](${rawUrl})`);
128
- }
129
- else {
130
- console.log(` ⚠ Could not create Gist: ${result.error}`);
131
- }
132
- }
133
- else if (config.gistId && (0, uploader_js_1.isGhAuthenticated)()) {
134
- // Existing Gist — push the updated badge
135
- const gistResult = (0, uploader_js_1.updateGist)(config.gistId, badgeSvg);
136
- if (gistResult.success) {
137
- const rawUrl = (0, uploader_js_1.getGistRawUrl)(config.username ?? "", config.gistId);
138
- console.log(` ✓ Badge pushed to Gist: ${rawUrl}`);
139
- }
140
- }
141
- (0, local_store_js_1.saveConfig)(config);
142
- console.log("\n ✓ Configuration saved to " + (0, local_store_js_1.getStoreDir)());
143
- console.log(" Badge saved locally to: " + (0, local_store_js_1.getBadgePath)());
144
- }
145
- function injectHook() {
146
- const settingsPath = (0, node_path_1.join)(CLAUDE_DIR, "settings.json");
147
- let settings = {};
148
- if ((0, node_fs_1.existsSync)(settingsPath)) {
149
- try {
150
- settings = JSON.parse((0, node_fs_1.readFileSync)(settingsPath, "utf-8"));
151
- }
152
- catch {
153
- console.log(" ⚠ Could not parse settings.json, creating new hooks section");
154
- }
155
- }
156
- // Check for existing cc-proficiency hook (idempotent)
157
- const hooks = (settings.hooks ?? {});
158
- const stopHooks = (hooks.Stop ?? []);
159
- const alreadyInstalled = stopHooks.some((group) => group.hooks?.some((h) => h.command?.includes("cc-proficiency")));
160
- if (alreadyInstalled) {
161
- console.log(" Hook already installed (skipping)");
162
- return;
163
- }
164
- // Ensure ~/.claude/ exists before writing settings.json
165
- if (!(0, node_fs_1.existsSync)(CLAUDE_DIR)) {
166
- (0, node_fs_1.mkdirSync)(CLAUDE_DIR, { recursive: true });
167
- }
168
- // Find the installed path of this package
169
- // When compiled: dist/cli.js → dist/hooks/session-end.js
170
- const hookScript = (0, node_path_1.join)(__dirname, "hooks", "session-end.js");
171
- const hookCommand = `node "${hookScript}"`;
172
- stopHooks.push({
173
- hooks: [
174
- {
175
- type: "command",
176
- command: hookCommand,
177
- timeout: 5,
178
- },
179
- ],
180
- });
181
- hooks.Stop = stopHooks;
182
- settings.hooks = hooks;
183
- (0, node_fs_1.writeFileSync)(settingsPath, JSON.stringify(settings, null, 2), "utf-8");
184
- }
185
- // ── Analyze ──
186
- async function cmdAnalyze(args) {
187
- const full = args.includes("--full");
188
- console.log(full ? "Running full analysis..." : "Running incremental analysis...\n");
189
- const { sessions, config } = await gatherData(full);
190
- if (sessions.length === 0) {
191
- console.log("No sessions found. Use Claude Code first, then run analyze again.");
192
- return;
193
- }
194
- const setupChecklist = (0, config_parser_js_1.buildSetupChecklist)(config);
195
- const userConfig = (0, local_store_js_1.loadConfig)();
196
- const result = (0, engine_js_1.computeProficiency)(sessions, config, userConfig.username ?? "unknown", setupChecklist);
197
- // Update store with processed session IDs
198
- const store = (0, local_store_js_1.loadStore)();
199
- store.lastResult = result;
200
- for (const s of sessions) {
201
- if (!store.processedSessionIds.includes(s.sessionId)) {
202
- store.processedSessionIds.push(s.sessionId);
203
- }
204
- }
205
- (0, local_store_js_1.saveStore)(store);
206
- // Display
207
- printResult(result);
208
- }
209
- async function gatherData(full) {
210
- const config = (0, config_parser_js_1.parseClaudeConfig)();
211
- const sessions = [];
212
- const store = full ? { processedSessionIds: [] } : (0, local_store_js_1.loadStore)();
213
- const projectsDir = (0, node_path_1.join)(CLAUDE_DIR, "projects");
214
- if (!(0, node_fs_1.existsSync)(projectsDir))
215
- return { sessions, config };
216
- const projects = (0, node_fs_1.readdirSync)(projectsDir);
217
- for (const proj of projects) {
218
- const projDir = (0, node_path_1.join)(projectsDir, proj);
219
- try {
220
- const files = (0, node_fs_1.readdirSync)(projDir).filter((f) => f.endsWith(".jsonl"));
221
- for (const file of files) {
222
- const sessionId = file.replace(".jsonl", "");
223
- if (!full && (0, local_store_js_1.isSessionProcessed)(store, sessionId)) {
224
- continue;
225
- }
226
- try {
227
- const session = await (0, transcript_parser_js_1.parseTranscript)((0, node_path_1.join)(projDir, file));
228
- if (session.events.length > 0) {
229
- sessions.push(session);
230
- }
231
- }
232
- catch {
233
- // skip unreadable files
234
- }
235
- }
236
- }
237
- catch {
238
- // skip unreadable project dirs
239
- }
240
- }
241
- return { sessions, config };
242
- }
243
- function printResult(result) {
244
- console.log(` Claude Code Proficiency — @${result.username}`);
245
- console.log(" " + "─".repeat(40));
246
- if (result.phase === "calibrating") {
247
- const needed = Math.max(0, 3 - result.sessionCount);
248
- console.log(` ⏳ Calibrating... (${result.sessionCount} sessions, need ${needed} more)`);
249
- console.log("");
250
- printSetupChecklist(result.setupChecklist);
251
- return;
252
- }
253
- for (const d of result.domains) {
254
- const bar = progressBar(d.score, 20);
255
- const conf = d.confidence === "high" ? "●" : d.confidence === "medium" ? "◐" : "○";
256
- console.log(` ${d.label.padEnd(14)} ${bar} ${String(d.score).padStart(3)} ${conf}`);
257
- }
258
- console.log(" " + "─".repeat(40));
259
- // Feature inventory
260
- const f = result.features;
261
- if (f.hooks.length > 0) {
262
- const shown = f.hooks.slice(0, 3).map((h) => `${h.name} (${h.count}x)`).join(", ");
263
- const more = f.hooks.length > 3 ? ` +${f.hooks.length - 3}` : "";
264
- console.log(` Hooks ${shown}${more}`);
265
- }
266
- if (f.skills.length > 0) {
267
- const shown = f.skills.slice(0, 3).map((s) => `${s.name} (${s.count}x)`).join(", ");
268
- const more = f.skills.length > 3 ? ` +${f.skills.length - 3}` : "";
269
- console.log(` Skills ${shown}${more}`);
270
- }
271
- if (f.mcpServers.length > 0) {
272
- console.log(` MCP ${f.mcpServers.join(", ")}`);
273
- }
274
- const toolSummary = f.topTools.slice(0, 4).map((t) => `${t.name} ${t.count}`).join(" · ");
275
- console.log(` Tools ${toolSummary} (+${f.uniqueToolCount - Math.min(4, f.topTools.length)} more)`);
276
- console.log(" " + "─".repeat(40));
277
- console.log(` ${result.sessionCount} sessions · ${result.projectCount} projects`);
278
- if (result.phase === "early") {
279
- console.log(` (early results — stabilizes at 10 sessions)`);
280
- }
281
- }
282
- function progressBar(score, width) {
283
- const filled = Math.round((score / 100) * width);
284
- const empty = width - filled;
285
- return "█".repeat(filled) + "░".repeat(empty);
286
- }
287
- function printSetupChecklist(cl) {
288
- const items = [
289
- ["CLAUDE.md", cl.hasClaudeMd],
290
- ["Hooks", cl.hasHooks],
291
- ["Plugins", cl.hasPlugins],
292
- ["MCP Servers", cl.hasMcpServers],
293
- ["Memory", cl.hasMemory],
294
- ["Rules", cl.hasRules],
295
- ];
296
- console.log(" Setup:");
297
- for (const [label, ok] of items) {
298
- console.log(` ${ok ? "✓" : "✗"} ${label}`);
299
- }
300
- }
301
- // ── Process ──
302
- async function cmdProcess() {
303
- if (!(0, queue_js_1.acquireLock)()) {
304
- console.log("Another process is running. Skipping.");
305
- return;
306
- }
307
- try {
308
- const queue = (0, queue_js_1.readQueue)();
309
- if (queue.length === 0) {
310
- console.log("Queue empty. Nothing to process.");
311
- return;
312
- }
313
- const store = (0, local_store_js_1.loadStore)();
314
- const newSessions = [];
315
- const processed = [];
316
- for (const entry of queue) {
317
- if ((0, local_store_js_1.isSessionProcessed)(store, entry.sessionId)) {
318
- processed.push(entry.sessionId);
319
- continue;
320
- }
321
- if (!(0, node_fs_1.existsSync)(entry.transcriptPath)) {
322
- (0, local_store_js_1.logError)(`Transcript not found: ${entry.transcriptPath}`);
323
- processed.push(entry.sessionId);
324
- continue;
325
- }
326
- try {
327
- const session = await (0, transcript_parser_js_1.parseTranscript)(entry.transcriptPath);
328
- if (session.events.length > 0) {
329
- newSessions.push(session);
330
- store.processedSessionIds.push(entry.sessionId);
331
- }
332
- processed.push(entry.sessionId);
333
- }
334
- catch (err) {
335
- (0, local_store_js_1.logError)(`Failed to parse ${entry.sessionId}: ${err}`);
336
- processed.push(entry.sessionId);
337
- }
338
- }
339
- // Recompute overall scores from all snapshots
340
- if (newSessions.length > 0) {
341
- const config = (0, config_parser_js_1.parseClaudeConfig)();
342
- const allSessions = await gatherAllProcessedSessions(store);
343
- const sessionsToScore = allSessions.length > 0 ? allSessions : newSessions;
344
- const setupChecklist = (0, config_parser_js_1.buildSetupChecklist)(config);
345
- const userConfig = (0, local_store_js_1.loadConfig)();
346
- const result = (0, engine_js_1.computeProficiency)(sessionsToScore, config, userConfig.username ?? "unknown", setupChecklist);
347
- store.lastResult = result;
348
- // Generate and save badge
349
- const svg = (0, svg_js_1.renderBadge)(result, getConfigLocale());
350
- const badgePath = (0, local_store_js_1.saveBadge)(svg);
351
- // Push to gist if configured and autoUpload enabled
352
- if (userConfig.autoUpload && userConfig.gistId && (0, uploader_js_1.isGhAuthenticated)()) {
353
- const gistResult = (0, uploader_js_1.updateGist)(userConfig.gistId, svg);
354
- if (!gistResult.success) {
355
- (0, local_store_js_1.logError)(`Gist push failed: ${gistResult.error}`);
356
- }
357
- }
358
- console.log(`Processed ${newSessions.length} session(s). Badge saved to ${badgePath}`);
359
- }
360
- // Remove processed entries from queue (re-reads to avoid race with hook appends)
361
- (0, queue_js_1.writeQueue)(new Set(processed));
362
- (0, local_store_js_1.saveStore)(store);
363
- }
364
- finally {
365
- (0, queue_js_1.releaseLock)();
366
- }
367
- }
368
- async function gatherAllProcessedSessions(store) {
369
- // Re-parse transcripts for all stored session IDs that still have files
370
- const sessions = [];
371
- const projectsDir = (0, node_path_1.join)(CLAUDE_DIR, "projects");
372
- if (!(0, node_fs_1.existsSync)(projectsDir))
373
- return sessions;
374
- const projects = (0, node_fs_1.readdirSync)(projectsDir);
375
- for (const proj of projects) {
376
- const projDir = (0, node_path_1.join)(projectsDir, proj);
377
- try {
378
- const files = (0, node_fs_1.readdirSync)(projDir).filter((f) => f.endsWith(".jsonl"));
379
- for (const file of files) {
380
- const sessionId = file.replace(".jsonl", "");
381
- if (store.processedSessionIds.includes(sessionId)) {
382
- try {
383
- const session = await (0, transcript_parser_js_1.parseTranscript)((0, node_path_1.join)(projDir, file));
384
- if (session.events.length > 0)
385
- sessions.push(session);
386
- }
387
- catch { /* skip */ }
388
- }
389
- }
390
- }
391
- catch { /* skip */ }
392
- }
393
- return sessions;
394
- }
395
- // ── Badge ──
396
- async function cmdBadge(args) {
397
- const store = (0, local_store_js_1.loadStore)();
398
- if (!store.lastResult) {
399
- console.log("No analysis data. Run 'cc-proficiency analyze' first.");
400
- return;
401
- }
402
- const svg = (0, svg_js_1.renderBadge)(store.lastResult, getConfigLocale());
403
- const outputIdx = args.indexOf("--output");
404
- if (outputIdx !== -1 && args[outputIdx + 1]) {
405
- (0, node_fs_1.writeFileSync)(args[outputIdx + 1], svg, "utf-8");
406
- console.log(`Badge written to ${args[outputIdx + 1]}`);
407
- }
408
- else {
409
- const path = (0, local_store_js_1.saveBadge)(svg);
410
- console.log(`Badge saved to ${path}`);
411
- }
412
- }
413
- // ── Push ──
414
- function cmdPush() {
415
- const config = (0, local_store_js_1.loadConfig)();
416
- const store = (0, local_store_js_1.loadStore)();
417
- if (!store.lastResult) {
418
- console.log("No analysis data. Run 'cc-proficiency analyze' first.");
419
- return;
420
- }
421
- if (!(0, uploader_js_1.isGhAuthenticated)()) {
422
- console.log("⚠ GitHub CLI not authenticated.");
423
- console.log("Badge saved locally to: " + (0, local_store_js_1.getBadgePath)());
424
- console.log("To enable: gh auth login && cc-proficiency init");
425
- return;
426
- }
427
- const svg = (0, svg_js_1.renderBadge)(store.lastResult, getConfigLocale());
428
- if (!config.gistId) {
429
- console.log("No Gist configured. Run 'cc-proficiency init' first.");
430
- return;
431
- }
432
- const result = (0, uploader_js_1.updateGist)(config.gistId, svg);
433
- if (result.success) {
434
- const rawUrl = (0, uploader_js_1.getGistRawUrl)(config.username ?? "", config.gistId);
435
- console.log("✓ Badge pushed to Gist");
436
- console.log(` ${rawUrl}`);
437
- }
438
- else {
439
- console.log(`✗ Push failed: ${result.error}`);
440
- }
441
- }
442
- // ── Status ──
443
- function cmdStatus() {
444
- const hookLogPath = (0, node_path_1.join)((0, local_store_js_1.getStoreDir)(), "hook.log");
445
- const queuePath = (0, node_path_1.join)((0, local_store_js_1.getStoreDir)(), "queue.jsonl");
446
- const store = (0, local_store_js_1.loadStore)();
447
- const config = (0, local_store_js_1.loadConfig)();
448
- console.log("\n cc-proficiency status\n");
449
- // Config
450
- console.log(` Username: ${config.username ?? "(not set)"}`);
451
- console.log(` Gist ID: ${config.gistId ?? "(not set)"}`);
452
- console.log(` Auto-upload: ${config.autoUpload}`);
453
- console.log(` Locale: ${config.locale ?? "en"}`);
454
- // Store
455
- console.log(`\n Sessions processed: ${store.processedSessionIds.length}`);
456
- console.log(` Last updated: ${store.lastUpdated ?? "never"}`);
457
- // Queue
458
- const queue = (0, queue_js_1.readQueue)();
459
- console.log(` Queue pending: ${queue.length}`);
460
- // Hook log
461
- if ((0, node_fs_1.existsSync)(hookLogPath)) {
462
- const log = (0, node_fs_1.readFileSync)(hookLogPath, "utf-8").trim().split("\n");
463
- const recent = log.slice(-10);
464
- console.log(`\n Hook log (last ${recent.length} entries):`);
465
- for (const line of recent) {
466
- console.log(` ${line}`);
467
- }
468
- // Last hook fire
469
- const lastQueued = log.filter((l) => l.includes("QUEUED")).pop();
470
- if (lastQueued) {
471
- const match = lastQueued.match(/\[(.*?)\]/);
472
- console.log(`\n Last hook fired: ${match ? match[1] : "unknown"}`);
473
- }
474
- }
475
- else {
476
- console.log("\n Hook log: no entries yet (hook hasn't fired)");
477
- }
478
- // Lock status
479
- const lockPath = (0, node_path_1.join)((0, local_store_js_1.getStoreDir)(), "queue.lock");
480
- if ((0, node_fs_1.existsSync)(lockPath)) {
481
- try {
482
- const lockTime = parseInt((0, node_fs_1.readFileSync)(lockPath, "utf-8"), 10);
483
- const age = Math.round((Date.now() - lockTime) / 1000);
484
- console.log(` Queue lock: held (${age}s ago)${age > 60 ? " ← STALE" : ""}`);
485
- }
486
- catch {
487
- console.log(" Queue lock: present (unknown age)");
488
- }
489
- }
490
- else {
491
- console.log(" Queue lock: none");
492
- }
493
- console.log("");
494
- }
495
- // ── Explain ──
496
- function cmdExplain() {
497
- const store = (0, local_store_js_1.loadStore)();
498
- if (!store.lastResult) {
499
- console.log("No analysis data. Run 'cc-proficiency analyze' first.");
500
- return;
501
- }
502
- const result = store.lastResult;
503
- const sorted = [...result.domains].sort((a, b) => b.score - a.score);
504
- const weakest = [...result.domains].sort((a, b) => a.score - b.score);
505
- console.log(`\n Claude Code Proficiency — @${result.username}\n`);
506
- console.log(" Strengths:");
507
- for (const d of sorted) {
508
- console.log(` ${d.label.padEnd(14)} ${d.score}/100`);
509
- }
510
- const tips = {
511
- "cc-mastery": "Enhance CLAUDE.md with imports, add hooks with matchers, create rules files, use plan mode",
512
- "tool-mcp": "Chain tools deliberately (Grep→Read→Edit), set up MCP servers, use LSP integration",
513
- "agentic": "Use subagents with different types (Explore, Plan), try parallel agents and worktrees",
514
- "prompt-craft": "Structure prompts with markdown lists, provide code blocks and file references",
515
- "context-mgmt": "Use cross-session memory files, work across multiple projects, update CLAUDE.md",
516
- };
517
- console.log("\n Areas to Improve:");
518
- for (let i = 0; i < Math.min(2, weakest.length); i++) {
519
- const d = weakest[i];
520
- console.log(` ${d.label} (${d.score}/100)`);
521
- console.log(` → ${tips[d.id] ?? "Practice using this feature area"}`);
522
- }
523
- // Feature inventory detail
524
- const f = result.features;
525
- console.log("\n Feature Usage:");
526
- if (f.hooks.length > 0)
527
- console.log(` Hooks: ${f.hooks.map((h) => `${h.name} (${h.count}x)`).join(", ")}`);
528
- if (f.skills.length > 0)
529
- console.log(` Skills: ${f.skills.map((s) => `${s.name} (${s.count}x)`).join(", ")}`);
530
- if (f.mcpServers.length > 0)
531
- console.log(` MCP: ${f.mcpServers.join(", ")}`);
532
- console.log(` Tools: ${f.topTools.map((t) => `${t.name} (${t.count})`).join(", ")} +${f.uniqueToolCount - f.topTools.length} more`);
533
- console.log(` Flags: ${f.usedPlanMode ? "✓ Plan" : "✗ Plan"} ${f.hasMemory ? "✓ Memory" : "✗ Memory"} ${f.hasRules ? "✓ Rules" : "✗ Rules"}`);
534
- console.log(`\n ${result.sessionCount} sessions · ${result.projectCount} projects\n`);
535
- }
536
- // ── Config ──
537
- function cmdConfig(args) {
538
- const config = (0, local_store_js_1.loadConfig)();
539
- if (args.length === 0) {
540
- console.log(JSON.stringify(config, null, 2));
541
- return;
542
- }
543
- if (args.length === 1) {
544
- const key = args[0];
545
- if (key in config) {
546
- console.log(`${key}: ${JSON.stringify(config[key])}`);
547
- }
548
- else {
549
- console.log(`Unknown key: ${key}`);
550
- }
551
- return;
552
- }
553
- const [key, value] = args;
554
- if (key === "username")
555
- config.username = value;
556
- else if (key === "gistId")
557
- config.gistId = value;
558
- else if (key === "autoUpload")
559
- config.autoUpload = value === "true";
560
- else if (key === "public")
561
- config.public = value === "true";
562
- else if (key === "locale")
563
- config.locale = value;
564
- else {
565
- console.log(`Unknown key: ${key}`);
566
- return;
567
- }
568
- (0, local_store_js_1.saveConfig)(config);
569
- console.log(`Set ${key} = ${value}`);
570
- }
571
- // ── Uninstall ──
572
- function cmdUninstall() {
573
- console.log("Uninstalling cc-proficiency...\n");
574
- // Remove hook from settings.json
575
- const settingsPath = (0, node_path_1.join)(CLAUDE_DIR, "settings.json");
576
- if ((0, node_fs_1.existsSync)(settingsPath)) {
577
- try {
578
- const settings = JSON.parse((0, node_fs_1.readFileSync)(settingsPath, "utf-8"));
579
- if (settings.hooks?.Stop) {
580
- settings.hooks.Stop = settings.hooks.Stop.filter((group) => !group.hooks?.some((h) => h.command?.includes("cc-proficiency")));
581
- if (settings.hooks.Stop.length === 0) {
582
- delete settings.hooks.Stop;
583
- }
584
- if (Object.keys(settings.hooks).length === 0) {
585
- delete settings.hooks;
586
- }
587
- (0, node_fs_1.writeFileSync)(settingsPath, JSON.stringify(settings, null, 2), "utf-8");
588
- console.log(" ✓ Hook removed from settings.json");
589
- }
590
- }
591
- catch {
592
- console.log(" ⚠ Could not update settings.json");
593
- }
594
- }
595
- // Remove local data
596
- const storeDir = (0, local_store_js_1.getStoreDir)();
597
- if ((0, node_fs_1.existsSync)(storeDir)) {
598
- try {
599
- const files = (0, node_fs_1.readdirSync)(storeDir);
600
- for (const f of files) {
601
- (0, node_fs_1.unlinkSync)((0, node_path_1.join)(storeDir, f));
602
- }
603
- (0, node_fs_1.rmdirSync)(storeDir);
604
- console.log(" ✓ Local data removed");
605
- }
606
- catch {
607
- console.log(" ⚠ Could not fully remove " + storeDir);
608
- }
609
- }
610
- console.log("\n cc-proficiency uninstalled. Run 'npm uninstall -g cc-proficiency' to remove the package.");
611
- }
612
- main().catch((err) => {
613
- console.error("Error:", err);
614
- process.exit(1);
615
- });
616
- //# sourceMappingURL=cli.js.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}