@rely-ai/caliber 1.15.0 → 1.15.2
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 +19 -20
- package/dist/bin.js +15 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -65,16 +65,13 @@ caliber init
|
|
|
65
65
|
├─ 2. 🔍 Discover Analyze languages, frameworks, dependencies, file structure,
|
|
66
66
|
│ and existing agent configs via LLM
|
|
67
67
|
│
|
|
68
|
-
├─ 3. 🛠️ Generate Create
|
|
69
|
-
│
|
|
68
|
+
├─ 3. 🛠️ Generate Create CLAUDE.md + skills in parallel (core docs via smart
|
|
69
|
+
│ model, skills via fast model). Auto-polishes for max score
|
|
70
70
|
│
|
|
71
71
|
├─ 4. 👀 Review See a diff of proposed changes — accept, refine via
|
|
72
72
|
│ chat, or decline. All changes are backed up automatically
|
|
73
73
|
│
|
|
74
|
-
|
|
75
|
-
│ uses (databases, APIs, platforms)
|
|
76
|
-
│
|
|
77
|
-
└─ 6. 🧩 Skills Search community skill registries and install relevant
|
|
74
|
+
└─ 5. 🧩 Skills Search community skill registries and install relevant
|
|
78
75
|
skills for your tech stack
|
|
79
76
|
```
|
|
80
77
|
|
|
@@ -151,28 +148,30 @@ caliber undo # Revert everything
|
|
|
151
148
|
|
|
152
149
|
## 📊 Scoring
|
|
153
150
|
|
|
154
|
-
`caliber score` gives you a deterministic quality score
|
|
151
|
+
`caliber score` gives you a deterministic, tech-stack-agnostic quality score. No LLM needed — it cross-references your config files against the actual project filesystem.
|
|
155
152
|
|
|
156
153
|
```
|
|
157
|
-
Config Score
|
|
158
|
-
|
|
159
|
-
FILES & SETUP
|
|
160
|
-
QUALITY
|
|
161
|
-
|
|
162
|
-
ACCURACY
|
|
163
|
-
FRESHNESS & SAFETY
|
|
164
|
-
BONUS
|
|
154
|
+
Agent Config Score 88 / 100 Grade A
|
|
155
|
+
|
|
156
|
+
FILES & SETUP 17 / 17
|
|
157
|
+
QUALITY 21 / 23
|
|
158
|
+
GROUNDING 20 / 20
|
|
159
|
+
ACCURACY 10 / 15
|
|
160
|
+
FRESHNESS & SAFETY 10 / 10
|
|
161
|
+
BONUS 5 / 5
|
|
165
162
|
```
|
|
166
163
|
|
|
167
164
|
| Category | Points | What it checks |
|
|
168
165
|
| ---------------------- | ------ | ------------------------------------------------------------------ |
|
|
169
|
-
| **Files & Setup** | 25 | Config files exist, skills present, cross-platform parity
|
|
170
|
-
| **Quality** | 25 | Has
|
|
171
|
-
| **
|
|
172
|
-
| **Accuracy** | 15 |
|
|
173
|
-
| **Freshness & Safety** | 10 | Recently updated, no leaked secrets, permissions
|
|
166
|
+
| **Files & Setup** | 25 | Config files exist, skills present, MCP servers, cross-platform parity |
|
|
167
|
+
| **Quality** | 25 | Has code blocks, concise token budget, concrete instructions, structured headings |
|
|
168
|
+
| **Grounding** | 20 | Config references actual project directories and files |
|
|
169
|
+
| **Accuracy** | 15 | Referenced paths exist on disk, config is in sync with code (git-based) |
|
|
170
|
+
| **Freshness & Safety** | 10 | Recently updated, no leaked secrets, permissions configured |
|
|
174
171
|
| **Bonus** | 5 | Auto-refresh hooks, AGENTS.md, OpenSkills format |
|
|
175
172
|
|
|
173
|
+
Every failing check includes structured fix data — when `caliber init` runs, the LLM receives exactly what's wrong and how to fix it.
|
|
174
|
+
|
|
176
175
|
## 🧩 Skills
|
|
177
176
|
|
|
178
177
|
Caliber searches three community registries and scores results against your project
|
package/dist/bin.js
CHANGED
|
@@ -5997,9 +5997,8 @@ async function initCommand(options) {
|
|
|
5997
5997
|
console.log(chalk8.dim(" 2. Discover Analyze your code, dependencies, and structure"));
|
|
5998
5998
|
console.log(chalk8.dim(" 3. Generate Create config files tailored to your project"));
|
|
5999
5999
|
console.log(chalk8.dim(" 4. Review Preview, refine, and apply the changes"));
|
|
6000
|
-
console.log(chalk8.dim(" 5.
|
|
6001
|
-
console.log(
|
|
6002
|
-
console.log(title.bold(" Step 1/6 \u2014 Connect your LLM\n"));
|
|
6000
|
+
console.log(chalk8.dim(" 5. Skills Browse community skills for your stack\n"));
|
|
6001
|
+
console.log(title.bold(" Step 1/5 \u2014 Connect your LLM\n"));
|
|
6003
6002
|
let config = loadConfig();
|
|
6004
6003
|
if (!config) {
|
|
6005
6004
|
console.log(chalk8.dim(" No LLM provider set yet. Choose how to run Caliber:\n"));
|
|
@@ -6030,7 +6029,7 @@ async function initCommand(options) {
|
|
|
6030
6029
|
- **Fast model**: ${fastModel || "none"}`);
|
|
6031
6030
|
}
|
|
6032
6031
|
await validateModel({ fast: true });
|
|
6033
|
-
console.log(title.bold(" Step 2/
|
|
6032
|
+
console.log(title.bold(" Step 2/5 \u2014 Discover your project\n"));
|
|
6034
6033
|
console.log(chalk8.dim(" Learning about your languages, dependencies, structure, and existing configs.\n"));
|
|
6035
6034
|
const spinner = ora2("Analyzing project...").start();
|
|
6036
6035
|
const fingerprint = await collectFingerprint(process.cwd());
|
|
@@ -6041,8 +6040,13 @@ async function initCommand(options) {
|
|
|
6041
6040
|
}
|
|
6042
6041
|
trackInitProjectDiscovered(fingerprint.languages.length, fingerprint.frameworks.length, fingerprint.fileTree.length);
|
|
6043
6042
|
console.log(chalk8.dim(` Languages: ${fingerprint.languages.join(", ") || "none detected"}`));
|
|
6044
|
-
console.log(chalk8.dim(` Files: ${fingerprint.fileTree.length} found
|
|
6045
|
-
|
|
6043
|
+
console.log(chalk8.dim(` Files: ${fingerprint.fileTree.length} found`));
|
|
6044
|
+
if (fingerprint.codeAnalysis) {
|
|
6045
|
+
const ca = fingerprint.codeAnalysis;
|
|
6046
|
+
const contextInfo = ca.truncated ? `Context: ~${ca.includedTokens.toLocaleString()} tokens (${Math.round(ca.includedTokens / ca.totalProjectTokens * 100)}% of ${ca.totalProjectTokens.toLocaleString()} total)` : `Context: ~${ca.includedTokens.toLocaleString()} tokens`;
|
|
6047
|
+
console.log(chalk8.dim(` ${contextInfo}`));
|
|
6048
|
+
}
|
|
6049
|
+
console.log("");
|
|
6046
6050
|
if (report) {
|
|
6047
6051
|
report.markStep("Fingerprint");
|
|
6048
6052
|
report.addJson("Fingerprint: Git", { remote: fingerprint.gitRemoteUrl, packageName: fingerprint.packageName });
|
|
@@ -6135,7 +6139,7 @@ async function initCommand(options) {
|
|
|
6135
6139
|
passingChecks = baselineScore.checks.filter((c) => c.passed).map((c) => ({ name: c.name }));
|
|
6136
6140
|
currentScore = baselineScore.score;
|
|
6137
6141
|
if (failingChecks.length > 0) {
|
|
6138
|
-
console.log(title.bold(" Step 3/
|
|
6142
|
+
console.log(title.bold(" Step 3/5 \u2014 Fine-tuning\n"));
|
|
6139
6143
|
console.log(chalk8.dim(` Your setup scores ${baselineScore.score}/100 \u2014 fixing ${failingChecks.length} remaining issue${failingChecks.length === 1 ? "" : "s"}:
|
|
6140
6144
|
`));
|
|
6141
6145
|
for (const check of failingChecks) {
|
|
@@ -6144,11 +6148,11 @@ async function initCommand(options) {
|
|
|
6144
6148
|
console.log("");
|
|
6145
6149
|
}
|
|
6146
6150
|
} else if (hasExistingConfig) {
|
|
6147
|
-
console.log(title.bold(" Step 3/
|
|
6151
|
+
console.log(title.bold(" Step 3/5 \u2014 Improve your setup\n"));
|
|
6148
6152
|
console.log(chalk8.dim(" Reviewing your existing configs against your codebase"));
|
|
6149
6153
|
console.log(chalk8.dim(" and preparing improvements.\n"));
|
|
6150
6154
|
} else {
|
|
6151
|
-
console.log(title.bold(" Step 3/
|
|
6155
|
+
console.log(title.bold(" Step 3/5 \u2014 Build your agent setup\n"));
|
|
6152
6156
|
console.log(chalk8.dim(" Creating config files tailored to your project.\n"));
|
|
6153
6157
|
}
|
|
6154
6158
|
console.log(chalk8.dim(" This can take a couple of minutes depending on your model and provider.\n"));
|
|
@@ -6225,7 +6229,7 @@ async function initCommand(options) {
|
|
|
6225
6229
|
role: "assistant",
|
|
6226
6230
|
content: summarizeSetup("Initial generation", generatedSetup)
|
|
6227
6231
|
});
|
|
6228
|
-
console.log(title.bold(" Step 4/
|
|
6232
|
+
console.log(title.bold(" Step 4/5 \u2014 Review and apply\n"));
|
|
6229
6233
|
const setupFiles = collectSetupFiles(generatedSetup);
|
|
6230
6234
|
const staged = stageFiles(setupFiles, process.cwd());
|
|
6231
6235
|
const totalChanges = staged.newFiles + staged.modifiedFiles;
|
|
@@ -6398,7 +6402,7 @@ async function initCommand(options) {
|
|
|
6398
6402
|
log(options.verbose, ` Still failing: ${c.name} (${c.earnedPoints}/${c.maxPoints})${c.suggestion ? ` \u2014 ${c.suggestion}` : ""}`);
|
|
6399
6403
|
}
|
|
6400
6404
|
}
|
|
6401
|
-
console.log(title.bold("\n Step
|
|
6405
|
+
console.log(title.bold("\n Step 5/5 \u2014 Community skills\n"));
|
|
6402
6406
|
console.log(chalk8.dim(" Search public skill registries for skills that match your tech stack.\n"));
|
|
6403
6407
|
let wantsSkills;
|
|
6404
6408
|
if (options.autoApprove) {
|
package/package.json
CHANGED