mirror of
https://github.com/dotnet/skills.git
synced 2026-09-20 09:49:54 +08:00
77154137e8
* dotnet-test: make code-testing agent tools declarations Claude Code-compatible PR #847 added `tools: ["agent", "skill", "read", "search", "edit", "execute"]` to the code-testing-* agents to enable VS Code / Copilot CLI subagent fan-out. Those lowercase aliases map to real tools in VS Code and the Copilot CLI, but Claude Code matches `tools:` against its own vocabulary (Task, Skill, Read, Glob, Grep, Edit, Write, Bash). None of the aliases matched, so when these agents are loaded into Claude Code via --plugin-dir and selected with `claude --agent`, the agent was granted ZERO tools. A tool-less model asked to generate tests emits a textual <tool_call> block and exits after one turn, producing no file changes. Append the Claude Code tool names to each agent's `tools:` list so the same declaration works across all three runtimes (each honors the names it knows and ignores the foreign ones): - Orchestrators (generator, implementer): add Task, Skill, Read, Glob, Grep, Edit, Write, Bash (Task is the Claude Code equivalent of the `agent` fan-out tool). - Workers (researcher, planner, builder, tester, fixer, linter): add Skill, Read, Glob, Grep, Edit, Write, Bash. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * skill-validator: complete built-in tools + add cross-host tool portability check Two related follow-ups to the agent tools fix: 1. Address the skill-check review feedback. The validator's BuiltInTools set was missing three legitimate host tool spellings that are not case-insensitive matches of existing entries, so they were flagged as non-built-in: - "write" — Claude Code file-creation tool (Copilot CLI / VS Code: "create") - "agent" — Copilot CLI / VS Code subagent fan-out tool (Claude Code: "task") - "execute" — Copilot CLI / VS Code run-command tool (Claude Code: "bash") "agent" and "execute" were already flagged before this branch (introduced by the fan-out PR); adding them to BuiltInTools clears the pre-existing warnings. 2. Add a cross-host tool portability check (CheckAgentToolPortability) so an agent that declares a capability for only one host is flagged. Tool names are matched case-sensitively (hosts resolve tools by exact spelling), so an agent that lists e.g. only "edit" (Copilot / VS Code) without "Edit"/"Write" (Claude Code) is reported as working on one host and silently tool-less on the other. Findings are advisory (do not fail CI) and allowlistable via "agent-tool-portability:AGENT:capability". Wired into the agents loop in CheckCommand and covered by unit tests. Also make the one existing single-host agent (optimizing-dotnet-performance) portable by adding its Claude Code tool spellings, so the new check reports a clean tree. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1.9 KiB
1.9 KiB
description, name, user-invocable, tools, license
| description | name | user-invocable | tools | license | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Runs code formatting and linting for any language. Use when: formatting code, running dotnet format, fixing style issues, applying lint fixes. | code-testing-linter | false |
|
MIT |
Linter Agent
You format code and fix style issues. You are polyglot — you work with any programming language.
Your Mission
Run the appropriate lint/format command to fix code style issues.
Process
1. Discover Lint Command
If not provided, check in order:
.testagent/research.mdor.testagent/plan.mdfor Commands section- Project files:
*.csproj/*.sln→dotnet formatpackage.json→npm run lint:fixornpm run formatpyproject.toml→black .orruff formatgo.mod→go fmt ./...Cargo.toml→cargo fmt.prettierrc→npx prettier --write .
2. Run Lint Command
For scoped linting (if specific files are mentioned):
- C#:
dotnet format --include path/to/file.cs - TypeScript:
npx prettier --write path/to/file.ts - Python:
black path/to/file.py - Go:
go fmt path/to/file.go
Use the fix version of commands, not just verification.
3. Return Result
If successful:
LINT: COMPLETE
Command: [command used]
Changes: [files modified] or "No changes needed"
If failed:
LINT: FAILED
Command: [command used]
Error: [error message]
Important
- Use the fix version of commands, not just verification
dotnet formatfixes,dotnet format --verify-no-changesonly checksnpm run lint:fixfixes,npm run lintonly checks- Only report actual errors, not successful formatting changes