copilot-benchmark
Benchmarks performance of Copilot agent responses.
Install
mkdir -p .claude/skills/copilot-benchmark && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/10227" && unzip -o skill.zip -d .claude/skills/copilot-benchmark && rm skill.zipInstalls to .claude/skills/copilot-benchmark
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Run the Copilot agent benchmark suite against a target repo. Use when asked to run benchmarks, benchmark Lore, measure Copilot performance, compare control vs lore-enabled, or evaluate tool effectiveness.Key capabilities
- →Run benchmark suite
- →Compare control vs lore
- →Measure tool effectiveness
- →Evaluate answer quality
How it works
Runs concurrent arms (control vs lore-enabled) to compare accuracy and efficiency metrics.
Inputs & outputs
When to use copilot-benchmark
- →Benchmark Copilot agent performance
- →Compare Lore tool effectiveness
- →Evaluate model answer quality
- →Run statistical benchmarking for agent tuning
About this skill
Copilot Agent Benchmark
Purpose
Run Lore's Copilot agent benchmark harness, which evaluates how the Copilot CLI answers codebase questions with and without Lore MCP tools, comparing the two arms on correctness, coverage, and efficiency.
Prerequisites
copilotCLI installed and authenticated (copilot --versionmust work).- Node.js 22 (use
nvm use 22). - Lore built (
npm run build) — the testbeforeAllalso runs this. - Real API calls are made — this costs tokens.
Quick start
source ~/.nvm/nvm.sh && nvm use 22
npm run build
BENCHMARK_COPILOT=1 npx vitest run tests/benchmark/copilot-agent.test.ts
Environment variables
| Variable | Default | Description |
|---|---|---|
BENCHMARK_COPILOT | (unset) | Required. Set to 1 to enable the suite (skipped otherwise). |
BENCHMARK_REPO | lore-self | Target repo. Options: lore-self, zod, fastapi, esbuild, postgres, gson. |
BENCHMARK_MODEL | claude-opus-4.6 | LLM model passed to copilot CLI --model. |
BENCHMARK_INDEX_MODE | scip | Lore indexing mode: tree-sitter, scip, or full. |
BENCHMARK_ITERATIONS | 1 | Runs per task. Use ≥3 for statistical significance. |
BENCHMARK_EMBEDDING_MODEL | (empty) | Embedding model, e.g. nomic-ai/nomic-embed-text-v1.5. |
BENCHMARK_LSP | (unset) | Set to 1 to enable LSP enrichment during indexing. |
Instructions
When the user asks to run, execute, or launch a Copilot benchmark:
-
Pre-flight checks
- Ensure Node.js 22 is active:
source ~/.nvm/nvm.sh && nvm use 22. - Build Lore:
npm run build. - Verify
copilot --versionworks.
- Ensure Node.js 22 is active:
-
Determine configuration from user request
- Pick a repo from the available list. Default is
lore-self. - Pick an index mode. Default is
scip. - Pick iteration count. Default is
1for quick runs,3+for statistical significance. - Pick model. Default is
claude-opus-4.6.
- Pick a repo from the available list. Default is
-
Run the benchmark
- Launch as a background process since it runs for 10–20 minutes:
BENCHMARK_COPILOT=1 \ BENCHMARK_REPO=lore-self \ BENCHMARK_INDEX_MODE=scip \ BENCHMARK_ITERATIONS=1 \ npx vitest run tests/benchmark/copilot-agent.test.ts -
Monitor progress
- The test outputs per-task results as they complete (e.g.
[control] lore-self-1.1-openDb: success=1 correctness=0.85 ...). - 16 tasks run concurrently in pairs (control + lore-enabled), so results arrive in batches.
- Check the terminal periodically for
N/17progress.
- The test outputs per-task results as they complete (e.g.
-
Interpret results
- Per-task output shows:
success,correctness,ans_cov,file_cov,sym_cov,tokens,walltime. lore calls:shows which Lore MCP tools were invoked (or(none)if the model chose not to use them).MISSED parts:andMISSED answer lines:show expected answers that were not covered.- The aggregate report at the end compares control vs lore-enabled across all metrics.
- Per-task output shows:
-
Report to the user
- Summarize total tasks completed, overall success rates for both arms.
- Highlight tasks where lore-enabled outperformed control (or vice versa).
- Note Lore tool usage patterns.
- Report any tasks that timed out or failed.
How it works
Each task runs two concurrent arms:
- Control: Copilot CLI with Lore tools explicitly denied via
--deny-tool. - Lore-enabled: Copilot CLI with Lore MCP server registered via
--additional-mcp-config.
Both arms answer the same question about the target codebase, then results are scored against ground-truth expected answers.
Scoring metrics
- taskSuccess: 0 / 0.5 / 1 composite score
- correctness: 0–1 line-by-line match against expected answer
- answerCoverage: fraction of expected answer parts found
- fileCoverage: fraction of expected files referenced
- symbolCoverage: fraction of expected symbols mentioned
- tokensUsed: estimated token consumption
- wallTimeMs: end-to-end wall-clock time
- loreToolCallCount: number of
lore_*tool invocations
Available repos with ground truth
| Repo | Language | Size | Tasks |
|---|---|---|---|
lore-self | TypeScript | medium | 16 |
zod | TypeScript | small | partial |
fastapi | Python | medium | partial |
esbuild | Go/TypeScript | large | partial |
postgres | C | very-large | partial |
Key files
tests/benchmark/copilot-agent.test.ts— main test filetests/benchmark/util/copilot-agent.ts— copilot CLI invocationtests/benchmark/util/tasks.ts— ground truth answer tablestests/benchmark/util/repos.ts— repo specificationstests/benchmark/util/scorer.ts— scoring and report formattingtests/benchmark/util/questions.ts— question catalog and templatestests/benchmark/util/types.ts— shared types
Troubleshooting
- All tests skipped:
BENCHMARK_COPILOT=1is not set. lore calls: (none)on all tasks: The Lore MCP server may not be starting. Check thatdist/server/server.jsexists and therealpathSyncfix is present (commitee708f8). On macOS, symlink mismatches under/varcan cause silent failures.- Timeouts: Each arm has a 360s timeout. Complex tasks on large repos may time out. Check the model or increase timeout in
CopilotAgentOptions. copilotnot found: Install the Copilot CLI and authenticate first.
When not to use it
- →Non-Copilot benchmarking
Prerequisites
Limitations
- →Requires real API tokens
- →Long execution time
How it compares
Provides statistical comparison of agent performance with and without specific tools.
Compared to similar skills
copilot-benchmark side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| copilot-benchmark (this skill) | 0 | 5mo | Review | Advanced |
| backtesting-trading-strategies | 10 | 27d | Review | Intermediate |
| data-quality-frameworks | 6 | 2mo | Review | Intermediate |
| trulens-running-evaluations | 1 | 3mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
backtesting-trading-strategies
jeremylongshore
Backtest crypto and traditional trading strategies against historical data. Calculates performance metrics (Sharpe, Sortino, max drawdown), generates equity curves, and optimizes strategy parameters. Use when user wants to test a trading strategy, validate signals, or compare approaches. Trigger with phrases like "backtest strategy", "test trading strategy", "historical performance", "simulate trades", "optimize parameters", or "validate signals".
data-quality-frameworks
wshobson
Implement data quality validation with Great Expectations, dbt tests, and data contracts. Use when building data quality pipelines, implementing validation rules, or establishing data contracts.
trulens-running-evaluations
truera
Execute TruLens evaluations and view results
test-reporting-analytics
proffesor-for-testing
Advanced test reporting, quality dashboards, predictive analytics, trend analysis, and executive reporting for QE metrics. Use when communicating quality status, tracking trends, or making data-driven decisions.
extract-test-set
tradingstrategy-ai
Extract raw price dataframe for a test case
detect-metrics
tidymodels
Detect and list all metric functions in the yardstick package. Use when a user asks to find, list, or identify all metrics in the package.