Skip to content

feat: annotate automatic tools and exclude from fluency scoring#529

Merged
rajbos merged 3 commits intomainfrom
automatic-tools-fluency-annotation
Mar 30, 2026
Merged

feat: annotate automatic tools and exclude from fluency scoring#529
rajbos merged 3 commits intomainfrom
automatic-tools-fluency-annotation

Conversation

@rajbos
Copy link
Copy Markdown
Owner

@rajbos rajbos commented Mar 30, 2026

Why

The fluency score's Tool Usage and Agentic categories counted all tools Copilot uses — including tools it calls automatically on its own (reading files, searching the codebase, checking errors, etc.). This inflated scores for users who simply use agent mode, even if they haven't configured anything intentional like MCP servers or terminal access. Only tools the user explicitly enables or configures should signal AI fluency.

What changed

New: vscode-extension/src/automaticTools.json

A curated list of ~60 tool IDs that Copilot calls autonomously as background context gathering — file reads, directory listings, grep/search, error checks, confirmations, memory, terminal reads, and internal session tools. These are excluded from fluency scoring but still shown everywhere else.

Fluency scoring (maturityScoring.ts)

Both the fast-path (calculateFluencyScoreForTeamMember) and the detail-path (calculateMaturityScores) now compute nonAutoToolCount by filtering automatic tools from the tool map. This value drives:

  • Agentic stage thresholds (3+ tools for Stage 3, 5+ for Stage 4)
  • Tool Usage Stage 2 gate (at least 1 intentional tool)

Evidence text now reads e.g. "3 intentional tools used (+ 8 automatic)" so users understand the distinction.

The getFluencyLevelData() function (which powers the Fluency Level Viewer) also has its threshold descriptions updated to say "intentional tools" and explain automatic tools are excluded.

Usage Analysis webview (webview/usage/main.ts)

All tools still appear in the tool-usage tables, but automatic tools now show an auto badge with a tooltip explaining they don't count toward fluency scoring.

CLI (cli/esbuild.js)

automaticTools.json added to the data files copied and bundled at build time — the CLI shares maturityScoring.ts so it benefits automatically.

Documentation & agent instructions

  • docs/FLUENCY-LEVELS.md — new Automatic vs. Intentional Tools section with examples of each category
  • .github/agents/tool-names.agent.mdautomaticTools.json listed as a key file; added decision guide and checklist item for classifying new tools
  • Both sync-toolnames prompts updated to also maintain automaticTools.json when syncing new tool names

rajbos and others added 3 commits March 30, 2026 10:27
Add automaticTools.json with a curated list of tool IDs that Copilot calls
autonomously (file reads, codebase searches, error checks, confirmations, etc.).
These tools do not require user configuration and should not inflate fluency scores.

Changes:
- New vscode-extension/src/automaticTools.json: list of automatic tool IDs
- maturityScoring.ts: compute nonAutoToolCount and use it for tuStage/agStage
  thresholds; evidence text now distinguishes intentional vs automatic tools
- webview/usage/main.ts: show 'auto' badge on automatic tools in tool tables
- cli/esbuild.js: include automaticTools.json in the bundled data files
- docs/FLUENCY-LEVELS.md: document the automatic vs intentional tool distinction

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- maturityScoring.ts getFluencyLevelData(): update threshold text in Agentic
  and Tool Usage levels to say 'intentional tools' instead of 'unique tools',
  and explain that automatic tools are excluded (Stage 1 description, Stage 2
  now lists examples of intentional tools)
- .github/agents/tool-names.agent.md: add automaticTools.json as a key file,
  add Automatic vs. Intentional Tools guidance section, update checklist
- sync-toolnames prompts (both copies): update constraints to also modify
  automaticTools.json and classify new tools as automatic or intentional

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rajbos rajbos enabled auto-merge (squash) March 30, 2026 11:23
@rajbos rajbos merged commit 4d37f78 into main Mar 30, 2026
18 checks passed
@rajbos rajbos deleted the automatic-tools-fluency-annotation branch March 30, 2026 11:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant