rubric-chat 0.1.0 → 0.1.1
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/README.md +64 -0
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/package.json +7 -4
package/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# rubric-chat
|
|
2
|
+
|
|
3
|
+
A strict 0–100 score for AI conversations.
|
|
4
|
+
|
|
5
|
+
Auto-discover terminal-agent sessions on disk or upload an export — Rubric grades the prompting craft on six dimensions (specificity, context, structure, iteration, scope, meta-prompting), names an archetype, and gives you a public score card you can share.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm i -g rubric-chat
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Requires Node ≥ 18.
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Interactive wizard — auto-login, picks a session, scores it, opens the report.
|
|
19
|
+
rubric-chat
|
|
20
|
+
|
|
21
|
+
# Common subcommands
|
|
22
|
+
rubric-chat status # who am I, what plan, where are the URLs pointed
|
|
23
|
+
rubric-chat login # browser-callback login (or --no-browser to paste a token)
|
|
24
|
+
rubric-chat logout
|
|
25
|
+
rubric-chat list # show discovered local sessions
|
|
26
|
+
rubric-chat rate <id> # score a specific session id
|
|
27
|
+
rubric-chat rate --file path # score a JSON file (ChatGPT or Claude.ai export)
|
|
28
|
+
|
|
29
|
+
# Output modes
|
|
30
|
+
rubric-chat rate <id> --json # machine-readable
|
|
31
|
+
rubric-chat rate <id> --quiet # exit code + URL only
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Supported sources
|
|
35
|
+
|
|
36
|
+
| Source | How it's discovered | Status |
|
|
37
|
+
| --- | --- | --- |
|
|
38
|
+
| **Claude Code** | `~/.claude/projects/**/*.jsonl` | ✅ |
|
|
39
|
+
| **Codex CLI** | `~/.codex/sessions/**/*.jsonl` | ✅ |
|
|
40
|
+
| **Cursor** | local SQLite (`composerData`) | 🟡 next |
|
|
41
|
+
| **Cline / Roo / Aider / Continue** | per-tool storage | ⏳ planned |
|
|
42
|
+
| **ChatGPT export** | upload `conversations.json` via `--file` | ✅ |
|
|
43
|
+
| **Claude.ai export** | upload Anthropic data export JSON via `--file` | ✅ |
|
|
44
|
+
|
|
45
|
+
## What gets graded
|
|
46
|
+
|
|
47
|
+
The whole session as one artifact, on six weighted dimensions, with a strict curve so a competent median lands near 50 (not 85). Full rubric, weights, and the strictness formula are at <https://rubric.chat/methodology>.
|
|
48
|
+
|
|
49
|
+
## What we look at
|
|
50
|
+
|
|
51
|
+
Only your turns. The CLI strips assistant text locally before any payload leaves your machine — see the `apps/cli/src/sources/*.test.ts` files in the repo, which assert this at the wire level. User turns are also PII-redacted on the server before they reach the scoring model.
|
|
52
|
+
|
|
53
|
+
## Configuration
|
|
54
|
+
|
|
55
|
+
| Env var | Default | What it does |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| `RUBRIC_API_BASE_URL` | `https://api.rubric.chat` | Override for local dev |
|
|
58
|
+
| `RUBRIC_WEB_BASE_URL` | `https://rubric.chat` | Override for local dev |
|
|
59
|
+
|
|
60
|
+
Credentials are stored in the OS keychain (macOS Keychain, libsecret on Linux). Fallback: `~/.rubric/credentials` (chmod 600).
|
|
61
|
+
|
|
62
|
+
## License
|
|
63
|
+
|
|
64
|
+
MIT
|
package/dist/index.js
CHANGED
|
@@ -11,8 +11,10 @@ import { CLI_VERSION } from "./lib/config.js";
|
|
|
11
11
|
const program = new Command();
|
|
12
12
|
program
|
|
13
13
|
.name("rubric-chat")
|
|
14
|
-
.description("Score full AI chat sessions with Rubric.")
|
|
15
|
-
.version(CLI_VERSION)
|
|
14
|
+
.description("Score full AI chat sessions with Rubric. Run with no arguments for an interactive wizard.")
|
|
15
|
+
.version(CLI_VERSION)
|
|
16
|
+
.showHelpAfterError("(run `rubric-chat --help` for usage)")
|
|
17
|
+
.addHelpCommand("help [command]", "Show help for a command");
|
|
16
18
|
program
|
|
17
19
|
.command("login")
|
|
18
20
|
.description("Sign in via magic link (opens browser by default).")
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rubric-chat",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "A strict 0–100 score for AI conversations. Auto-discovers Claude Code and Codex CLI sessions (Cursor next); also accepts ChatGPT and Claude.ai exports. Six dimensions, eight archetypes, shareable score card.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"homepage": "https://rubric.chat",
|
|
@@ -18,12 +18,15 @@
|
|
|
18
18
|
"prompt",
|
|
19
19
|
"prompting",
|
|
20
20
|
"score",
|
|
21
|
-
"
|
|
22
|
-
"chatgpt",
|
|
21
|
+
"grading",
|
|
23
22
|
"ai",
|
|
24
23
|
"llm",
|
|
24
|
+
"chatgpt",
|
|
25
|
+
"claude",
|
|
25
26
|
"claude-code",
|
|
26
27
|
"codex",
|
|
28
|
+
"cursor",
|
|
29
|
+
"coding-agent",
|
|
27
30
|
"cli"
|
|
28
31
|
],
|
|
29
32
|
"bin": {
|