Skip to content

dotnet-test: make code-testing agent tools portable across Copilot CLI, Claude Code & Gemini CLI + add portability check#856

Open
Evangelink wants to merge 4 commits into
mainfrom
evangelink/claude-code-agent-tools
Open

dotnet-test: make code-testing agent tools portable across Copilot CLI, Claude Code & Gemini CLI + add portability check#856
Evangelink wants to merge 4 commits into
mainfrom
evangelink/claude-code-agent-tools

Conversation

@Evangelink

@Evangelink Evangelink commented Jul 3, 2026

Copy link
Copy Markdown
Member

Problem

#847 added tools: ["agent", "skill", "read", "search", "edit", "execute"] to the code-testing-* agents to enable subagent fan-out. As that PR notes, those lowercase aliases are portable across VS Code and the Copilot CLI.

They are not portable to the other CLI hosts that load these same agents from a marketplace/--plugin-dir:

  • Claude Code matches tools: against Task, Skill, Read, Glob, Grep, Edit, Write, Bash — and treats the list as an explicit, case-sensitive allow-list. None of the lowercase aliases match, so the agent is granted zero tools. A tool-less model asked to generate tests emits a textual <tool_call> block and exits after one turn with an empty diff. This surfaced as code-testing-generator scoring 0 on a Claude-Code-hosted benchmark run ("no changes detected").
  • Gemini CLI (which added custom subagents in 2026, defined the same way) uses a third, snake_case vocabulary: read_file, replace, write_file, glob, grep_search, run_shell_command.

Fix

Make each agent's tools: list a union of all three hosts' spellings, so one declaration works everywhere — each host honors the names it recognizes and ignores the rest (verified for Claude Code; Gemini/Copilot ignore unknown names too).

Capability Copilot CLI / VS Code Claude Code Gemini CLI
read files read Read read_file
modify files edit / create Edit / Write replace / write_file
search search Glob, Grep glob, grep_search
run commands execute Bash run_shell_command
subagents agent Task @agent (no tools entry)
skills skill Skill (implicit, no tools entry)

The additions are purely to the tools: frontmatter line of the 8 code-testing agents — no prose or behavior changes — so #847's fan-out is preserved.

skill-validator changes (prevention + review feedback)

1. Complete the validator's BuiltInTools set. The Copilot review flagged Write as non-built-in. Rather than temporary allowed-external-deps.txt entries (that file is meant to trend to empty), I added the host tool spellings that are legitimate built-ins but weren't case-insensitive matches of existing entries: write, agent, execute (the last two were already flagged pre-branch, from #847), plus the Gemini names read_file, replace, write_file, grep_search, run_shell_command.

2. Add a cross-host tool portability check (CheckAgentToolPortability). An agent that declares a capability for only one host is now flagged, with an actionable message ("add Read for Claude Code; read_file for Gemini CLI"). Names are matched case-sensitively (hosts resolve tools by exact spelling), so the exact bug this PR fixes is caught going forward. The capability table is per-host and generalizes to N hosts; capabilities with no tools:-level spelling on a host (Gemini subagents/skills) are not demanded there. Findings are advisory (they do not fail CI) and allowlistable via agent-tool-portability:AGENT:capability.

I also made the one pre-existing single-host agent (optimizing-dotnet-performance) portable so the check reports a clean tree.

Validation

  • skill-validator builds with 0 warnings; 32 ExternalDependencyCheckerTests pass.
  • Full skill-validator check across all 16 plugins passes with 0 findings.

…ompatible

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>
Copilot AI review requested due to automatic review settings July 3, 2026 11:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the dotnet-test plugin’s code-testing-* agent frontmatter to make their tools: allow-lists compatible with Claude Code by adding Claude’s tool vocabulary alongside the existing VS Code / Copilot CLI aliases.

Changes:

  • Expand tools: lists to include Claude Code tool names (Task, Skill, Read, Glob, Grep, Edit, Write, Bash) while preserving existing lowercase aliases.
  • Add Task specifically to orchestrator agents to preserve subagent fan-out behavior in Claude Code.
Show a summary per file
File Description
plugins/dotnet-test/agents/code-testing-generator.agent.md Adds Claude Code tool names (including Task) to the orchestrator’s allow-list.
plugins/dotnet-test/agents/code-testing-implementer.agent.md Adds Claude Code tool names (including Task) to the orchestrator’s allow-list.
plugins/dotnet-test/agents/code-testing-researcher.agent.md Adds Claude Code tool names to the worker agent allow-list.
plugins/dotnet-test/agents/code-testing-planner.agent.md Adds Claude Code tool names to the worker agent allow-list.
plugins/dotnet-test/agents/code-testing-builder.agent.md Adds Claude Code tool names to the worker agent allow-list.
plugins/dotnet-test/agents/code-testing-tester.agent.md Adds Claude Code tool names to the worker agent allow-list.
plugins/dotnet-test/agents/code-testing-fixer.agent.md Adds Claude Code tool names to the worker agent allow-list.
plugins/dotnet-test/agents/code-testing-linter.agent.md Adds Claude Code tool names to the worker agent allow-list.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 8/8 changed files
  • Comments generated: 8

Comment thread plugins/dotnet-test/agents/code-testing-tester.agent.md Outdated
Comment thread plugins/dotnet-test/agents/code-testing-researcher.agent.md Outdated
Comment thread plugins/dotnet-test/agents/code-testing-planner.agent.md Outdated
Comment thread plugins/dotnet-test/agents/code-testing-linter.agent.md Outdated
Comment thread plugins/dotnet-test/agents/code-testing-implementer.agent.md Outdated
Comment thread plugins/dotnet-test/agents/code-testing-generator.agent.md Outdated
Comment thread plugins/dotnet-test/agents/code-testing-fixer.agent.md Outdated
Comment thread plugins/dotnet-test/agents/code-testing-builder.agent.md Outdated
…ility 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>
@Evangelink Evangelink requested review from a team, JanKrivanek and ViktorHofer as code owners July 3, 2026 11:48
@Evangelink Evangelink changed the title dotnet-test: make code-testing agent tools declarations Claude Code-compatible dotnet-test: make code-testing agent tools Claude Code-compatible + add cross-host portability check Jul 3, 2026
@Evangelink Evangelink enabled auto-merge (squash) July 3, 2026 11:50
@Evangelink

Copy link
Copy Markdown
Member Author

/evaluate

Gemini CLI now supports custom subagents defined the same way as Claude Code
and the Copilot CLI (Markdown + YAML frontmatter with a tools: list, bundled in
an extension's agents/ dir), but it spells its built-in tools in a third,
snake_case vocabulary: read_file, replace, write_file, glob, grep_search,
run_shell_command. An agent that lists only the Copilot CLI / VS Code or Claude
Code spellings is silently tool-less under Gemini.

- Extend the ToolCapability model and CheckAgentToolPortability to N hosts and
  add the Gemini CLI column. 'invoke subagents' and 'invoke skills' have no
  Gemini tools-level spelling (Gemini delegates via @agent and loads skills
  implicitly), so their Gemini list is empty and not enforced.
- Add the Gemini built-in tool names to BuiltInTools so they are not flagged as
  non-built-in.
- Add the Gemini spellings to the 8 code-testing agents and to
  optimizing-dotnet-performance so the tri-host check reports a clean tree.
- Update unit tests for the three-host model (32 tests pass); full
  skill-validator check across all 16 plugins passes with 0 findings.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 3, 2026 12:01
@github-actions github-actions Bot added the pr-state/ready-for-eval PR is mergeable and awaiting evaluation label Jul 3, 2026
@Evangelink Evangelink changed the title dotnet-test: make code-testing agent tools Claude Code-compatible + add cross-host portability check dotnet-test: make code-testing agent tools portable across Copilot CLI, Claude Code & Gemini CLI + add portability check Jul 3, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 13/13 changed files
  • Comments generated: 1

Comment thread eng/skill-validator/src/Check/ExternalDependencyChecker.cs
github-actions Bot added a commit that referenced this pull request Jul 3, 2026
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Skill Validation Results

Skill Scenario Quality Skills Loaded Overfit Verdict
setup-local-sdk Basic local SDK setup with .NET 11 preview 3.0/5 → 5.0/5 🟢 ✅ setup-local-sdk; tools: skill ✅ 0.11
setup-local-sdk Install a specific SDK version locally 2.0/5 → 5.0/5 🟢 ✅ setup-local-sdk; tools: skill ✅ 0.11
setup-local-sdk Set up local SDK with MAUI workload 3.0/5 → 5.0/5 🟢 ✅ setup-local-sdk; tools: skill ✅ 0.11
setup-local-sdk Create team install scripts 4.0/5 → 3.0/5 🔴 ✅ setup-local-sdk; tools: skill, edit ✅ 0.11 [1]
setup-local-sdk Detect incompatible .NET host version 1.0/5 → 5.0/5 🟢 ✅ setup-local-sdk; tools: skill ✅ 0.11
dotnet-pinvoke Generate LibraryImport declaration from C header (.NET 8+) 5.0/5 → 5.0/5 ✅ dotnet-pinvoke; tools: skill ✅ 0.11
dotnet-pinvoke Generate LibraryImport declaration from C header (.NET Framework) 4.0/5 → 5.0/5 🟢 ✅ dotnet-pinvoke; tools: skill ✅ 0.11
nuget-trusted-publishing Set up trusted publishing for a new NuGet library 3.0/5 → 4.0/5 🟢 ✅ nuget-trusted-publishing; tools: skill, view ✅ 0.20
nuget-trusted-publishing Set up NuGet publishing without mentioning trusted publishing 3.0/5 → 4.0/5 🟢 ✅ nuget-trusted-publishing; tools: skill, report_intent, view ✅ 0.20
nuget-trusted-publishing Migrate existing workflow from API key to trusted publishing 3.0/5 → 4.0/5 🟢 ✅ nuget-trusted-publishing; tools: report_intent, skill, glob / ✅ nuget-trusted-publishing; tools: skill, report_intent, glob ✅ 0.20
csharp-scripts Avoid activating for language-agnostic calendar script 5.0/5 → 3.0/5 🔴 ✅ csharp-scripts; tools: skill, create / ✅ csharp-scripts; tools: skill 🟡 0.24
csharp-scripts Test a C# language feature with a file-based app 3.0/5 → 5.0/5 🟢 ✅ csharp-scripts; tools: skill, create, edit / ✅ csharp-scripts; tools: skill, create 🟡 0.24
csharp-scripts Compose a file-based app from helper files 5.0/5 → 5.0/5 ⚠️ NOT ACTIVATED 🟡 0.24 [2]

[1] (Isolated) Quality dropped but weighted score is +17.4% due to: completion (✗ → ✓), tokens (141891 → 109384), time (79.9s → 57.7s), tool calls (14 → 11)
[2] (Plugin) Quality unchanged but weighted score is -1.4% due to: tokens (82948 → 100334)

Model: claude-opus-4.6 | Judge: claude-opus-4.6

🔍 Full Results - additional metrics and failure investigation steps

To investigate failures, paste this to your AI coding agent:

For PR 856 in dotnet/skills, download eval artifacts with gh run download 28659220807 --repo dotnet/skills --pattern "skill-validator-results-*" --dir ./eval-results, then fetch https://raw.githubusercontent.com/dotnet/skills/67211a4917bd06f4e8ce46b63a88ce5936cc07cc/eng/skill-validator/src/docs/InvestigatingResults.md and follow it to analyze the results.json files. Diagnose each failure, suggest fixes to the eval.yaml and skill content, and tell me what to fix first.

▶ Sessions Visualisation -- interactive replay of all evaluation sessions
📊 Session Analytics (preview) -- aggregated metrics across evaluation sessions

@github-actions github-actions Bot added waiting-on-author PR state label and removed pr-state/ready-for-eval PR is mergeable and awaiting evaluation labels Jul 3, 2026
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

👋 @Evangelink — this PR has 1 unresolved review thread(s). When you're ready, please address the feedback and push an update; the triage bot will pick up the next state automatically. (Add the no-stale label to silence further pings.)

Addresses review feedback: CheckAgentToolPortability treated a host as having a
capability if *any* tool in that host's list was present, which produced false
negatives for capabilities that listed complementary (non-synonym) tools — e.g.
an agent with Claude Code's Glob but not Grep was considered portable for
'search' even though content search was missing.

Split the two combined capabilities so each host's list holds only interchangeable
spellings (any-of is then correct):
- 'search'       -> 'find files' (search / Glob / glob) + 'search file contents'
                    (search / Grep / grep_search)
- 'modify files' -> 'edit files' (edit / Edit / replace) + 'create files'
                    (create|edit / Write / write_file)

The Copilot CLI's single broad tool (search, edit) maps to both halves, so its
existing single-tool declarations stay portable while a partial Claude/Gemini
declaration (Glob without Grep, Edit without Write) is now flagged. Added a
regression test for the partial-search case; 33 tests pass and the full
skill-validator check across all 16 plugins still reports 0 findings.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@Evangelink

Copy link
Copy Markdown
Member Author

/evaluate

github-actions Bot added a commit that referenced this pull request Jul 3, 2026
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Skill Validation Results

Skill Scenario Quality Skills Loaded Overfit Verdict
dotnet-pinvoke Generate LibraryImport declaration from C header (.NET 8+) 5.0/5 → 5.0/5 ✅ dotnet-pinvoke; tools: skill ✅ 0.09
dotnet-pinvoke Generate LibraryImport declaration from C header (.NET Framework) 5.0/5 → 5.0/5 ✅ dotnet-pinvoke; tools: skill ✅ 0.09
nuget-trusted-publishing Set up trusted publishing for a new NuGet library 3.0/5 → 4.0/5 🟢 ✅ nuget-trusted-publishing; tools: skill ✅ 0.17
nuget-trusted-publishing Set up NuGet publishing without mentioning trusted publishing 3.0/5 → 5.0/5 🟢 ✅ nuget-trusted-publishing; tools: skill, view, glob ✅ 0.17
nuget-trusted-publishing Migrate existing workflow from API key to trusted publishing 3.0/5 → 4.0/5 🟢 ✅ nuget-trusted-publishing; tools: report_intent, skill, glob, view / ✅ nuget-trusted-publishing; tools: report_intent, skill, glob ✅ 0.17
csharp-scripts Avoid activating for language-agnostic calendar script 5.0/5 → 3.0/5 🔴 ✅ csharp-scripts; tools: skill, create 🟡 0.27
csharp-scripts Test a C# language feature with a file-based app 3.0/5 → 4.0/5 🟢 ✅ csharp-scripts; tools: skill, create 🟡 0.27
csharp-scripts Compose a file-based app from helper files 5.0/5 → 5.0/5 ✅ csharp-scripts; tools: skill, edit / ⚠️ NOT ACTIVATED 🟡 0.27 [1]
collect-user-input Event registration with custom validation 4.0/5 → 4.0/5 ✅ collect-user-input; tools: skill ✅ 0.12
collect-user-input Multi-step booking form with cross-field validation 3.0/5 → 4.0/5 🟢 ✅ collect-user-input; tools: skill ✅ 0.12
create-blazor-project University course catalog with enrollment form 2.0/5 → 4.0/5 🟢 ✅ create-blazor-project; tools: skill 🟡 0.28
create-blazor-project Recipe community with interactive ratings on static pages 4.0/5 → 5.0/5 🟢 ✅ create-blazor-project; tools: skill 🟡 0.28 [2]
create-blazor-project Global logistics tracking for worldwide users 4.0/5 → 4.0/5 ✅ create-blazor-project; tools: skill / ✅ create-blazor-project; tools: skill, task, read_agent 🟡 0.28 [3]
fetch-and-send-data Recipe browser with resilient data loading 3.0/5 → 3.0/5 ✅ fetch-and-send-data; tools: skill ✅ 0.19
fetch-and-send-data Real-time shipment tracker with Auto interactivity 4.0/5 → 4.0/5 ✅ fetch-and-send-data; tools: skill ✅ 0.19
coordinate-components Warehouse dashboard with site selector and live stock alerts 4.0/5 → 5.0/5 🟢 ✅ coordinate-components; tools: skill 🟡 0.24
coordinate-components Multi-tenant notification hub with cross-component fan-out 2.0/5 → 2.0/5 ✅ coordinate-components; tools: skill 🟡 0.24 [4]
author-component Author a data-loading search component 3.0/5 → 5.0/5 🟢 ✅ author-component; tools: skill, view / ✅ author-component; tools: skill, view, bash 🟡 0.22
author-component Author a multi-step wizard with async validation and shared state 3.0/5 → 4.0/5 🟢 ✅ author-component; tools: skill, view 🟡 0.22
author-component Author a generic data table component 4.0/5 → 4.0/5 ✅ author-component; tools: skill, bash 🟡 0.22
author-component Author a real-time notification badge component 3.0/5 → 4.0/5 🟢 ✅ author-component; tools: skill, view 🟡 0.22
author-component Author a sortable list with code-behind pattern 4.0/5 → 5.0/5 🟢 ✅ author-component; tools: skill 🟡 0.22
support-prerendering Equipment inventory loaded once 5.0/5 → 4.0/5 🔴 ✅ support-prerendering; tools: skill 🟡 0.21
support-prerendering Notifications page with live polling 3.0/5 → 4.0/5 🟢 ✅ support-prerendering; tools: skill 🟡 0.21
configure-auth Login and account management in a globally interactive app 3.0/5 → 5.0/5 🟢 ✅ configure-auth; tools: skill ✅ 0.08
configure-auth Multi-tier app with WebAssembly auth 2.0/5 → 5.0/5 🟢 ✅ configure-auth; tools: skill ✅ 0.08
plan-ui-change Project management Kanban board 3.0/5 → 4.0/5 🟢 ✅ plan-ui-change; tools: skill, grep 🟡 0.22
plan-ui-change E-commerce product catalog with filters and pagination 2.0/5 → 4.0/5 🟢 ✅ plan-ui-change; tools: skill, glob / ✅ plan-ui-change; tools: skill, grep 🟡 0.22
plan-ui-change Multi-step job application wizard 2.0/5 → 4.0/5 🟢 ✅ plan-ui-change; tools: skill / ⚠️ NOT ACTIVATED 🟡 0.22
plan-ui-change Application settings page with nested tab panels 3.0/5 → 4.0/5 🟢 ✅ plan-ui-change; tools: skill 🟡 0.22
plan-ui-change Team chat interface with message threads 2.0/5 → 4.0/5 🟢 ✅ plan-ui-change; tools: skill, edit / ✅ plan-ui-change; tools: skill, grep 🟡 0.22
use-js-interop Auto-saving notepad that survives page reloads 3.0/5 → 4.0/5 🟢 ✅ use-js-interop; tools: skill 🟡 0.21
use-js-interop User activity tracker that detects idle timeout 4.0/5 → 5.0/5 🟢 ✅ use-js-interop; tools: skill 🟡 0.21
use-js-interop Responsive layout that adapts to screen size 4.0/5 → 4.0/5 ✅ use-js-interop; tools: skill 🟡 0.21
use-js-interop Infinite scroll list using IntersectionObserver 4.0/5 → 5.0/5 🟢 ✅ use-js-interop; tools: skill 🟡 0.21

[1] (Isolated) Quality unchanged but weighted score is -3.8% due to: tokens (111853 → 171698), tool calls (11 → 14)
[2] (Isolated) Quality improved but weighted score is -4.0% due to: quality
[3] (Isolated) Quality unchanged but weighted score is -17.2% due to: judgment, quality, tokens (643119 → 790808)
[4] (Isolated) Quality unchanged but weighted score is -11.1% due to: judgment

Model: claude-opus-4.6 | Judge: claude-opus-4.6

🔍 Full Results - additional metrics and failure investigation steps

To investigate failures, paste this to your AI coding agent:

For PR 856 in dotnet/skills, download eval artifacts with gh run download 28663025042 --repo dotnet/skills --pattern "skill-validator-results-*" --dir ./eval-results, then fetch https://raw.githubusercontent.com/dotnet/skills/157e6161a5f75b0571291f0bcd358b35d156f414/eng/skill-validator/src/docs/InvestigatingResults.md and follow it to analyze the results.json files. Diagnose each failure, suggest fixes to the eval.yaml and skill content, and tell me what to fix first.

▶ Sessions Visualisation -- interactive replay of all evaluation sessions
📊 Session Analytics (preview) -- aggregated metrics across evaluation sessions

@github-actions github-actions Bot added waiting-on-review PR state label and removed waiting-on-author PR state label labels Jul 3, 2026
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

✅ Evaluation passed for 157e616. cc @ViktorHofer @JanKrivanek @dotnet/appmodel @dotnet/skills-diag-reviewers @dotnet/dotnet-testing — please review.

@AbhitejJohn AbhitejJohn left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Curious, how this would work once we move over to Vally. Could we evaluate before we merge - the move to Vally isn't far away and I'd like for these checks to continue once we switch as well.

/// advisory messages for human review. Entries matching the allowlist are
/// skipped.
/// </summary>
public static IReadOnlyList<string> CheckAgentToolPortability(AgentInfo agent, IReadOnlySet<string>? allowed = null)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'd want to figure out how this would work with Vally. We are close to moving over.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

waiting-on-review PR state label

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants