Filescope MCP
admica/FileScopeMCP
Codebase intelligence via FileScopeMCP — symbol lookup, dependency mapping, importance ranking, and semantic search.
Add a new deterministic scoring check in src/scoring/checks/ that evaluates config quality.
$ npx skills add caliber-ai-org/ai-setup --skill scoring-checks -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install caliber-ai-org/ai-setup scoring-checks --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/caliber-ai-org/ai-setup.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/scoring-checks .claude/skills/scoring-checks && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "scoring-checks" agent skill from https://github.com/caliber-ai-org/ai-setup/tree/master/skills/scoring-checks into .claude/skills/scoring-checks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scoring-checks", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/caliber-ai-org/ai-setup/tree/master/skills/scoring-checksType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add caliber-ai-org/ai-setup --skill scoring-checks -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install caliber-ai-org/ai-setup scoring-checks --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/caliber-ai-org/ai-setup.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/scoring-checks .agents/skills/scoring-checks && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "scoring-checks" agent skill from https://github.com/caliber-ai-org/ai-setup/tree/master/skills/scoring-checks into .agents/skills/scoring-checks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scoring-checks", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add caliber-ai-org/ai-setup --skill scoring-checks -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install caliber-ai-org/ai-setup scoring-checks --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/caliber-ai-org/ai-setup.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/scoring-checks .cursor/skills/scoring-checks && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "scoring-checks" agent skill from https://github.com/caliber-ai-org/ai-setup/tree/master/skills/scoring-checks into .cursor/skills/scoring-checks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scoring-checks", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/caliber-ai-org/ai-setup.git --path skills/scoring-checks--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add caliber-ai-org/ai-setup --skill scoring-checks -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install caliber-ai-org/ai-setup scoring-checks --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/caliber-ai-org/ai-setup.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/scoring-checks .gemini/skills/scoring-checks && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "scoring-checks" agent skill from https://github.com/caliber-ai-org/ai-setup/tree/master/skills/scoring-checks into .gemini/skills/scoring-checks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scoring-checks", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install caliber-ai-org/ai-setup scoring-checksInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add caliber-ai-org/ai-setup --skill scoring-checks -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/caliber-ai-org/ai-setup.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/scoring-checks .github/skills/scoring-checks && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "scoring-checks" agent skill from https://github.com/caliber-ai-org/ai-setup/tree/master/skills/scoring-checks into .github/skills/scoring-checks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scoring-checks", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add caliber-ai-org/ai-setup --skill scoring-checks -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install caliber-ai-org/ai-setup scoring-checks --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/caliber-ai-org/ai-setup.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/scoring-checks .opencode/skills/scoring-checks && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "scoring-checks" agent skill from https://github.com/caliber-ai-org/ai-setup/tree/master/skills/scoring-checks into .opencode/skills/scoring-checks/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scoring-checks", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
scoring-checksAdd a new deterministic scoring check in src/scoring/checks/ that evaluates config quality.
Scoring Checks is an agent skill from caliber-ai-org/ai-setup. Add a new deterministic scoring check in src/scoring/checks/ that evaluates config quality. Follows the Check[] return pattern, uses point constants from src/scoring/constants.ts, and integrates via filterChecksForTarget() in src/scoring/index.ts. Use when user says 'add scoring check', 'new check', 'modify scoring criteria', or works in src/scoring/checks/. Do NOT use for display changes or refactoring scoring logic.
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Refactoring. It works with Model Context Protocol. The repository describes itself as: Continuously sync your AI setups with one command. Codebase tailor suited agent skills, MCPs and config files for Claude Code, Cursor, and Codex. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f5dbc00. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Scoring Checks loads about 3k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 908 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from caliber-ai-org/ai-setup at commit f5dbc00, republished under its MIT licence (© caliber-ai-org). 908 words, ~3,017 tokens.
.claude/skills/scoring-checks/SKILL.md (or your agent's skills folder).Add a new deterministic check that evaluates a single aspect of AI agent config quality. All checks must be filesystem-based with no network calls or LLM inference.
earnedPoints and maxPoints must reference POINTS_* from src/scoring/constants.ts. Do NOT hardcode numbers.Check[] array: Export a function check<Category>(dir: string): Check[] where category is one of: existence, quality, grounding, accuracy, freshness, bonus.id (kebab-case, unique), name, category, maxPoints, earnedPoints, passed, detail, and optional suggestion/fix.action (string describing what to do), data (context for the fix), instruction (user-facing guidance).allChecks array in computeLocalScore().*_ONLY_CHECKS set in constants.ts.Verify before proceeding: Is your check measurable with a numeric point value?
Add constants below the appropriate category section (existence, quality, grounding, accuracy, freshness, bonus):
// In the appropriate CATEGORY section, e.g., Quality checks (25 pts):
export const POINTS_YOUR_CHECK_NAME = 4; // 1-12 pts typical
// If threshold-based, add a companion array:
export const YOUR_THRESHOLD_ARRAY = [
{ minValue: 10, points: 4 },
{ minValue: 5, points: 2 },
] as const;Check existing patterns: Token budgets use TOKEN_BUDGET_THRESHOLDS, code blocks use CODE_BLOCK_THRESHOLDS, concreteness uses CONCRETENESS_THRESHOLDS.
Verify: Review CATEGORY_MAX object to ensure your check fits within its category's point budget.
Choose the file based on category. Each file exports a check<Name>(dir: string): Check[] function:
existence.ts — files/directories exist (CLAUDE.md, .cursorrules, skills, MCP servers)quality.ts — config structure, size, clarity (code blocks, token budget, concreteness, duplicates)grounding.ts — references to actual project files/directory structureaccuracy.ts — validity of references, git-based config driftfreshness.ts — git commit-based staleness, secrets, permissionsbonus.ts — hooks, learned content, OpenSkills formatsources.ts — source configuration and usageCreate the function following this structure:
import type { Check } from '../index.js';
import {
POINTS_YOUR_CHECK,
YOUR_THRESHOLD_ARRAY,
} from '../constants.js';
import { readFileOrNull } from '../utils.js'; // or other helpers
export function checkYourCategory(dir: string): Check[] {
const checks: Check[] = [];
// 1. Measure something concrete
const yourMetric = /* e.g., countFiles(), validatePaths(), etc. */;
const threshold = YOUR_THRESHOLD_ARRAY.find(t => yourMetric >= t.minValue);
const earnedPts = threshold?.points ?? 0;
checks.push({
id: 'your_unique_check_id',
name: 'Human-readable check name',
category: 'quality', // matches function context
maxPoints: POINTS_YOUR_CHECK,
earnedPoints: earnedPts,
passed: earnedPts >= Math.ceil(POINTS_YOUR_CHECK * 0.6), // or custom logic
detail: `${earnedPts}/${POINTS_YOUR_CHECK} points — ${yourMetric} items found`,
suggestion: earnedPts >= POINTS_YOUR_CHECK ? undefined : 'Action to improve',
fix: earnedPts >= POINTS_YOUR_CHECK ? undefined : {
action: 'verb_noun', // e.g., 'add_code_blocks', 'fix_references'
data: { currentValue: yourMetric, targetValue: 10 },
instruction: 'Specific, actionable guidance for the user.',
},
});
return checks;
}Verify ID uniqueness: Run grep -r "'your_unique_check_id'" src/scoring/checks/ — should return only your new check.
If your check only applies to certain agents (Claude, Cursor, Codex, GitHub Copilot), register it in src/scoring/constants.ts:
// Add to the appropriate set:
export const CLAUDE_ONLY_CHECKS = new Set([
'claude_md_exists',
'your_new_check_id', // ← add here
'claude_rules_exist',
]);Available sets (update exactly one if applicable):
CLAUDE_ONLY_CHECKS — Claude Code targetsCURSOR_ONLY_CHECKS — Cursor targetsCODEX_ONLY_CHECKS — Codex/OpenCode targetsCOPILOT_ONLY_CHECKS — GitHub Copilot targetsBOTH_ONLY_CHECKS — Both Claude AND Cursor (cross-platform parity)NON_CODEX_CHECKS — Everything except Codex/OpenCodeCLAUDE_OR_CODEX_CHECKS — Claude OR CodexVerify filtering: Examine filterChecksForTarget() in src/scoring/index.ts to ensure your category will work correctly for your target agents.
Import your function at the top:
import { checkYourCategory } from './checks/your-file.js';Add to computeLocalScore() inside the allChecks array initialization:
export function computeLocalScore(dir: string, targetAgent?: TargetAgent): ScoreResult {
const target = targetAgent ?? detectTargetAgent(dir);
const allChecks: Check[] = [
...checkExistence(dir),
...checkQuality(dir),
...checkGrounding(dir),
...checkAccuracy(dir),
...checkYourCategory(dir), // ← ADD HERE IN ORDER
...checkFreshness(dir),
...checkBonus(dir),
...checkSources(dir),
];
// ... rest of function
}Verify registration: Run npm test src/scoring/__tests__/accuracy.test.ts (or similar) — all existing tests should still pass.
Create or edit src/scoring/checks/__tests__/your-file.test.ts:
import { describe, it, expect } from 'vitest';
import { mkdtempSync, writeFileSync, rmSync } from 'fs';
import { join } from 'path';
import { checkYourCategory } from '../your-file.js';
import { POINTS_YOUR_CHECK } from '../../constants.js';
describe('checkYourCategory', () => {
it('awards full points when condition passes', () => {
const dir = mkdtempSync('test-scoring-');
try {
// Set up the passing condition
writeFileSync(join(dir, 'SOME_FILE.md'), 'content that satisfies check');
const checks = checkYourCategory(dir);
const check = checks.find(c => c.id === 'your_unique_check_id');
expect(check).toBeDefined();
expect(check?.passed).toBe(true);
expect(check?.earnedPoints).toBe(POINTS_YOUR_CHECK);
} finally {
rmSync(dir, { recursive: true });
}
});
it('awards zero points when condition fails', () => {
const dir = mkdtempSync('test-scoring-');
try {
// Don't create the required condition
const checks = checkYourCategory(dir);
const check = checks.find(c => c.id === 'your_unique_check_id');
expect(check?.passed).toBe(false);
expect(check?.earnedPoints).toBe(0);
} finally {
rmSync(dir, { recursive: true });
}
});
it('returns correct detail message', () => {
const dir = mkdtempSync('test-scoring-');
try {
const checks = checkYourCategory(dir);
const check = checks.find(c => c.id === 'your_unique_check_id');
expect(check?.detail).toBeTruthy();
} finally {
rmSync(dir, { recursive: true });
}
});
});Run tests: npm test src/scoring/checks/__tests__/your-file.test.ts. All must pass before shipping.
Trigger: User says "Add a check to verify .claude/rules/ directory exists."
Actions:
export const POINTS_CLAUDE_RULES = 3; to constants.tsexistsSync(join(dir, '.claude', 'rules')) → true/false...checkExistence(dir) (already done)Result: Check id: 'claude_rules_exist' returns earnedPoints: 3, passed: true when dir exists.
Trigger: User says "Verify config has at least 3 code blocks with executable commands."
Actions:
export const CODE_BLOCK_THRESHOLDS = [
{ minBlocks: 3, points: 8 },
{ minBlocks: 2, points: 6 },
{ minBlocks: 1, points: 3 },
] as const;Result: 3+ blocks = 8 pts, 2 blocks = 6 pts, 1 block = 3 pts, 0 blocks = 0 pts.
Trigger: User says "Check that all file paths mentioned in config actually exist."
Actions:
export const POINTS_REFERENCES_VALID = 8; to constants.tsexistsSync(join(dir, path))valid / totalMath.round(ratio * POINTS_REFERENCES_VALID)Result: 80% valid refs = ~6 pts; 100% valid = 8 pts; 0% valid = 0 pts.
Issue: "My check doesn't appear in the score report."
Fix: 1) Verify ID in *_ONLY_CHECKS if platform-specific. 2) Verify import and spread in index.ts allChecks array. 3) Run npm test to ensure no tsc errors. 4) Check detectTargetAgent() returns your target platform.
Issue: "Points are hardcoded but should use constants."
Fix: Replace all literal numbers like earnedPoints: 5 with earnedPoints: POINTS_YOUR_CHECK. Constants are in src/scoring/constants.ts — use them consistently.
Issue: "Check makes an API call or network request."
Fix: Scoring MUST be deterministic and offline. Use only: fs module (readFileSync, existsSync, readdirSync), path, execSync for git commands. No HTTP, no LLM calls, no external services.
Issue: "Platform-specific check appears for the wrong agent."
Fix: 1) Verify check ID is in correct *_ONLY_CHECKS set. 2) Double-check filterChecksForTarget() handles your platform set. 3) Test with detectTargetAgent() on a real project.
Issue: "Test fails with 'Module not found' error."
Fix: Ensure file is in src/scoring/checks/ (not nested). Use .js extension in imports (TypeScript transpiles to ES modules). Run npm run build to check for tsc errors.
Issue: "Detail message is confusing or too technical."
Fix: Use friendly language: 3 code blocks found (need 3 for full points) instead of codeBlockCount=3. Make it clear WHY they got/lost points.
Issue: "Threshold-based check gives wrong points for edge cases."
Fix: Test all boundaries: value=0, value=threshold, value>>threshold. Use .find() to match highest-to-lowest: find(t => value >= t.minValue).
Issue: "Two checks have the same ID."
Fix: Run grep -r "'my_id'" src/scoring/checks/ to find duplicates. IDs must be globally unique across all check files. Use descriptive names like claude_md_exists, not check_1.
© caliber-ai-org, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/scoring-checks of caliber-ai-org/ai-setup.
Open the folder on GitHubat commit f5dbc00
Scoring Checks next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Scoring Checks this skillcaliber-ai-org/ai-setup | 1.3k | — | ~3k | Automated safety check: Pass | MIT | |
| Filescope MCPadmica/FileScopeMCP | 302 | — | ~1.7k | Automated safety check: Pass | Proprietary | |
| Gograph Go Repository Intelligenceozgurcd/gograph | 229 | — | ~4.8k | Automated safety check: Notes | MIT | |
| Memtrace Decision Memorysyncable-dev/memtrace-public | 489 | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| Testing With API Mocksstacklok/toolhive-studio | 171 | — | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| Edt MCP Project Local FixDitriXNew/EDT-MCP | 296 | — | ~507 | Automated safety check: Pass | AGPL-3.0 |
admica/FileScopeMCP
Codebase intelligence via FileScopeMCP — symbol lookup, dependency mapping, importance ranking, and semantic search.
ozgurcd/gograph
Gives an agent working in a Go codebase a structural view through a local MCP server: call graphs, blast-radius and impact analysis, and bounded first-call exploration.
syncable-dev/memtrace-public
Use Cortex decision memory through the normal Memtrace MCP tools.
stacklok/toolhive-studio
Start here for all API mocking in tests. An agent skill from stacklok/toolhive-studio.
DitriXNew/EDT-MCP
Apply one bounded BSL correction through EDT-MCP with lost-update protection, targeted validation, and minimal diff.
code-yeongyu/oh-my-openagent
Searches and rewrites code by syntax-tree shape across 25 languages with ast-grep, for codemods, structural queries and YAML lint rules, using a Python wrapper script.
caliber-ai-org/ai-setup
Creates a new CLI command following the Commander.js pattern in src/commands/.
caliber-ai-org/ai-setup
Writes Vitest tests following project patterns: tests/ directories, vi.mock() for module mocking with vi.hoisted() for test-time factories, global LLM mock from src/test/setup.ts, environment…
caliber-ai-org/ai-setup
Discovers and installs community skills from the public registry.
caliber-ai-org/ai-setup
Adds a new LLM provider implementing LLMProvider interface with call() and stream() methods.
caliber-ai-org/ai-setup
Saves user instructions as persistent learnings for future sessions.
caliber-ai-org/ai-setup
Sets up Caliber for automatic AI agent context sync. An agent skill from caliber-ai-org/ai-setup.
Works with
Categories
Add a new deterministic scoring check in src/scoring/checks/ that evaluates config quality. Scoring Checks is an agent skill from caliber-ai-org/ai-setup. Add a new deterministic scoring check in src/scoring/checks/ that evaluates config quality.
Scoring Checks fits situations like: user says add scoring check; modify scoring criteria; works in src/scoring/checks/; display changes.
Run `npx skills add caliber-ai-org/ai-setup --skill scoring-checks -a claude-code`. Or copy the skill folder (skills/scoring-checks in caliber-ai-org/ai-setup) into .claude/skills/scoring-checks in your project. Claude Code loads it when a task matches its description.
Run `npx skills add caliber-ai-org/ai-setup --skill scoring-checks -a codex`. Or copy the skill folder (skills/scoring-checks in caliber-ai-org/ai-setup) into .agents/skills/scoring-checks in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add caliber-ai-org/ai-setup --skill scoring-checks -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/scoring-checks, .gemini/skills/scoring-checks, .github/skills/scoring-checks and .opencode/skills/scoring-checks in your project.
Going by SKILL.md and its folder, Scoring Checks needs the command-line tools its instructions call (npm).
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Scoring Checks is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Scoring Checks: Filescope MCP (admica/FileScopeMCP, 302 stars), Gograph Go Repository Intelligence (ozgurcd/gograph, 229 stars), Memtrace Decision Memory (syncable-dev/memtrace-public, 489 stars) and Testing With API Mocks (stacklok/toolhive-studio, 171 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
caliber-ai-org (a GitHub organization) maintains it in caliber-ai-org/ai-setup, which has 1,302 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on September 24, 2026.
Source: caliber-ai-org/ai-setup on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.