Commit Graph

589 Commits

Author SHA1 Message Date
dependabot[bot] 3cbbaf2c3c Bump the github-actions-dependencies group with 2 updates (#573)
Bumps the github-actions-dependencies group with 2 updates: [actions/setup-node](https://github.com/actions/setup-node) and [tj-actions/changed-files](https://github.com/tj-actions/changed-files).


Updates `actions/setup-node` from 6.3.0 to 6.4.0
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/53b83947a5a98c8d113130e565377fae1a50d02f...48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e)

Updates `tj-actions/changed-files` from 47.0.0 to 47.0.6
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/24d32ffd492484c1d75e0c0b894501ddb9d30d62...9426d40962ed5378910ee2e21d5f8c6fcbf2dd96)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions-dependencies
- dependency-name: tj-actions/changed-files
  dependency-version: 47.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-24 11:07:21 +00:00
Jan Krivanek 81946d2a38 Add proxy for CTA extension files (#583) 2026-04-24 12:19:17 +02:00
Jan Krivanek 2575de7ba4 Add explicit dashboard link (#584) 2026-04-24 12:13:10 +02:00
Amaury Levé 1b105d1940 Fix dotnet-test-frameworks skill activation for evaluations (#580)
* Fix dotnet-test-frameworks skill activation for evaluations

The skill had user-invocable: false and a description saying 'DO NOT USE
directly', which prevented the model from activating it during evaluation.
All 6 eval scenarios default to expect_activation: true, causing
SkillNotActivated failures on CI.

- Remove user-invocable: false from both dotnet-test and experimental copies
- Rewrite description with activation keywords matching eval prompts
  (assertion mapping, framework identification, skip annotations, exception
  assertions, lifecycle conversion, integration test markers)
- Preserve note that other analysis skills also load this as reference data

* Restore user-invocable: false, fix cross-refs, add expect_activation: false

Address review comment: remove exp-* skill references from dotnet-test-
frameworks description since those skills reference exp-dotnet-test-
frameworks instead.

Optimize eval results: this reference data skill's content is knowledge
the model already has (baseline scores 5.0/5 on most scenarios). Direct
activation adds token/time overhead without quality improvement:
- Restore user-invocable: false (correct for reference data skill)
- Shorten description to not trigger activation
- Add expect_activation: false to all 6 scenarios

The skill's value is realized when loaded by consumer skills (e.g.
test-anti-patterns), not via direct user queries.
2026-04-23 16:24:48 +02:00
Amaury Levé c6cf65c7c3 Add Markdown Linter agentic workflow (#582)
Adds a new agentic workflow (.github/workflows/markdown-linter.md) that
runs Super Linter on weekdays at 2 PM UTC and on manual dispatch. The
agent analyzes linter output and creates GitHub issues with categorized
findings, severity breakdown, and fix recommendations.

Adapted from https://github.com/githubnext/agentics/blob/main/workflows/markdown-linter.md
with repo-specific conventions: PAT pool rotation, fork protection,
pinned action SHAs, scoped bash tools, and safe-outputs.
2026-04-23 13:57:45 +00:00
Jan Krivanek 4ace5459f8 Improve agent based on C++ testing feedback (#571)
* Improve agent based on C++ testing feedback

* Rename Cpp.md to cpp.md
2026-04-23 15:52:29 +02:00
Jan Krivanek d917c7b3e1 Improve dashboards visualisation (#576) 2026-04-23 15:51:27 +02:00
Amaury Levé f8e8191268 Add concrete pipeline examples for code-testing-agent (#572)
Add end-to-end input/output examples to anchor expected behavior for the
LLM, addressing the Example Quality (2/5) review feedback.

Changes:
- New extensions/dotnet-examples.md with .NET-specific examples: sample
  source code, research output, plan output, generated test file, fix
  cycle walkthroughs, and final report
- SKILL.md: replace one-liner examples with strategy selection table,
  pipeline walkthrough, and pointer to language-specific extensions
- Generator agent: add strategy decision examples and sample final report
- Researcher/Planner/Implementer agents: add references to extension
  examples for concrete output shapes

Architecture keeps core agents language-agnostic — all language-specific
examples live in the extensions/ folder.
2026-04-23 12:18:36 +00:00
Amaury Levé dee829b89c Fix eval timeout for MSTest.Sdk scenario by pre-warming NuGet cache (#548)
The 'Migrate MSTest.Sdk v3 project using ManagedType and TestTimeout'
scenario times out on CI because MSTest.Sdk/4.1.0 resolution takes 40+
seconds on cold NuGet cache. Each agent session may call dotnet build
multiple times, easily exceeding the 240s timeout.

Add a 'dotnet restore' setup command that runs before the agent starts
(outside the timeout window), pre-warming the NuGet cache and obj/
directory so subsequent builds complete in ~2s.
2026-04-23 11:33:45 +00:00
Viktor Hofer a5e20a1fef Remove agentic workflows (#579)
* Remove agentic workflows

The agentic workflows were useful when CCA didn't support loading skills. That's now solved and supported. The agentic workflows come with a couple of issues (limited chars) which make it hard to use. Remove them in favor of the plugin system.

* Remove Agentic Workflows section from README

Removed section about Agentic Workflows from README.

* Remove stale /agentic-workflows references from CONTRIBUTING.md, CODEOWNERS, and docs

Agent-Logs-Url: https://github.com/dotnet/skills/sessions/8f129e2f-156e-4ee9-9897-896cd1981513

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-04-23 08:13:12 +00:00
Amaury Levé 8651264f12 Fix skill activation for exit code 8 scenario (#567)
* Initial plan

* Improve MTP migration skill guidance for OutputType conditions

Agent-Logs-Url: https://github.com/dotnet/skills/sessions/ae2f9ae1-c8c3-4e50-95ab-ccdc08bc388b

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

* Add eval scenario for OutputType conditioning in Directory.Build.props

Agent-Logs-Url: https://github.com/dotnet/skills/sessions/734b3736-45a4-4f5d-b83c-3e6ee72fcfae

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

* Fix skill activation for exit code 8 scenario

Add 'zero tests discovered', 'MTP behavioral differences', '--ignore-exit-code', and 'TESTINGPLATFORM_EXITCODE_IGNORE' to skill description to improve activation for the exit code 8 eval scenario. Consolidate filter syntax mention to stay within 1024-char limit.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-04-21 19:10:25 +02:00
Jan Krivanek c549fa1f18 Fix jsonl sessions attaching (#569) 2026-04-21 15:48:42 +02:00
Jan Krivanek 05aeb657e6 Add license to agent files (#568) 2026-04-21 12:57:18 +00:00
Artur Spychaj 270ef910ec Ensure validation runs for all strategies including Direct (#570)
Harden the test generator agent to ensure final build validation, test
validation, and git commit always run — even when using the Direct
strategy for small requests.

Changes:
- Step 1: Mandate reading language-specific extensions (e.g., dotnet.md)
  before writing any code. The extension contains critical project
  registration (dotnet sln add) and build validation guidance.
- Step 2: Direct strategy now skips only Steps 3-5 (research, plan,
  implement sub-agents), NOT Steps 6-9. Added explicit note that
  Steps 6-9 are mandatory for ALL strategies.
- Step 6: Clarify full-solution build must use no --framework flag to
  catch multi-target framework issues (e.g., net472 errors).
- Step 7: Require fresh build for final test validation (no --no-build).
- New Step 9: Explicit git commit with verification that the diff is
  non-empty.
- New rules 9-11: Read extensions first, always validate+commit,
  preserve existing tests.

Motivated by MSBench investigation showing:
- Agent used Direct strategy and skipped final validation entirely
- Agent never read extensions/dotnet.md (missing dotnet sln add)
- Agent forgot to git commit (300 tests created, Changes +0 -0)
- Agent deleted pre-existing tests while adding new ones

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-21 14:27:32 +02:00
Amaury Levé cb7c10bd32 fix mstest sdk eval timeout (#558)
* Fix timeout in MSTest.Sdk v3-to-v4 eval scenario 9

The fixture csproj had MSTest.Sdk/3.8.0 while the prompt claimed the user
already upgraded to 4.1.0. This mismatch caused the model to edit the
csproj and run dotnet build, triggering slow MSTest SDK NuGet downloads
that exceeded the 240s timeout on CI.

- Update fixture csproj to MSTest.Sdk/4.1.0 to match the prompt
- Add specific CS error codes to the prompt so the model provides direct
  fixes instead of building
- Update rubric item to reflect the project already being on 4.1.0

* Fix CI timeout in migrate-mstest-v3-to-v4 eval scenario

Reduce scope of the 'Fix multiple v4 breaking changes' scenario:
- Remove 3 lower-signal breaking changes from the fixture (AreEqual params,
  IsInstanceOfType out param, Properties.Contains) to cut agent work
- Add max_turns: 5 to cap agent iterations
- Lower timeout from 240 to 180 seconds

* Strengthen net6.0 scenario prompt for reliable skill activation
v1.0.0
2026-04-21 09:48:13 +02:00
Copilot c625f09db5 Recommend MSBuildProjectName for OutputType conditions in MTP migration skill (#556)
* Initial plan

* Improve MTP migration skill guidance for OutputType conditions

Agent-Logs-Url: https://github.com/dotnet/skills/sessions/ae2f9ae1-c8c3-4e50-95ab-ccdc08bc388b

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

* Add eval scenario for OutputType conditioning in Directory.Build.props

Agent-Logs-Url: https://github.com/dotnet/skills/sessions/734b3736-45a4-4f5d-b83c-3e6ee72fcfae

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>
Co-authored-by: Amaury Levé <amauryleve@microsoft.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-21 07:24:59 +00:00
Amaury Levé 5826c421b4 Fix test-anti-patterns plugin activation by disambiguating competing descriptions (#552)
The test-anti-patterns skill was not reliably activated in plugin mode
because sibling descriptions overlapped:

- test-quality-auditor agent: narrowed to multi-skill audit pipelines
  only, explicitly excluding single-file reviews
- writing-mstest-tests skill: removed 'review' and 'anti-patterns' from
  description, added explicit exclusion for test quality auditing
- test-anti-patterns skill: expanded trigger phrases to better match
  review prompts (flaky tests, duplication, tests that pass without
  verifying)
2026-04-21 09:13:20 +02:00
Amaury Levé 7841934a75 Add migrate-mstest-v3-to-v4 eval scenarios for uncovered patterns (#564)
* Add migrate-mstest-v3-to-v4 eval scenarios for uncovered patterns

Add 5 new scenarios (Goals 10-14) covering:
- Verified package update with build/test validation
- Sealed custom TestMethodAttribute with Timeout migration
- TestMethodAttribute/TestMethod display name constructor syntax
- Assert.IsInstanceOfType out parameter breaking change
- TreatDiscoveryWarningsAsErrors and behavioral changes review

Add 4 new fixture directories:
- v3-verified-migration: buildable project for end-to-end validation
- v3-sealed-timeout: sealed attr + TestTimeout.Infinite patterns
- v3-testmethod-displayname: [TestMethod/Attribute("name")] patterns
- v3-instanceoftype: Assert.IsInstanceOfType<T> out param pattern

Covers uncovered validation items (lines 449-451, 458) and code
patterns: [TestMethod], [Timeout], sealed, [TestMethodAttribute],
Assert.IsInstanceOfType.

* Improve skill description for activation and bump scenario timeouts

Rewrite migrate-mstest-v3-to-v4 frontmatter description to improve SDK
semantic matching:
- Lead with symptom (fix build errors) instead of action (migrate)
- Add error codes CS0507, CS0103, CS1061, CS1615 as trigger signals
- Add symptom phrase: tests don't compile after upgrading MSTest
- Expand breaking change keywords: sealed, DisplayName syntax,
  Assert.IsInstanceOfType out parameter, TestContext.TestName
- Keep under 1024 char limit

Bump timeout 180s -> 240s for scenarios 11 (sealed attr) and 13
(IsInstanceOfType) that hit timeout during evaluation.

* Address PR review comments

- Remove unused 'using System' from OrderServiceTests.cs and TypeCheckTests.cs
- Renumber duplicate Goal 10 to Goal 15 (non-activation scenario)
- Tighten file_contains assertion to check MSTest.TestFramework and
  MSTest.TestAdapter individually instead of broad '4.' match
- Tighten Timeout assertion to require int.MaxValue instead of matching
  pre-migration symbol names
- Fix error code CS0507 -> CS0115 in scenario 11 prompt to match the
  actual MSTest v4 error for missing Execute override
2026-04-21 09:12:45 +02:00
Amaury Levé 96489b425e eval(dotnet-test): add evaluations for dotnet-test-frameworks skill (#563) 2026-04-20 19:39:40 +00:00
Amaury Levé 7740b2b53c Improve migrate-mstest-v1v2-to-v3 evals to differentiate from baseline (#547)
Five scenarios were performing at or below stock Copilot because prompts
gave away answers and rubric items tested knowledge the baseline LLM
can deduce from the code alone.

Changes per scenario:

- Fix DataRow type mismatch: added double-to-float mismatch, vaguer
  prompt, rubric tests both mismatch types and latest-3.x knowledge
- Migrate .testsettings to .runsettings: added code coverage data
  collector to fixture, rubric tests correct TestTimeout mapping
  (<MSTest><TestTimeout> not <TestSessionTimeout>) and collector mapping
- Migrate MSTest v2 NuGet to v3: vaguer prompt (forces model to read
  csproj), rubric tests metapackage/MSTest.Sdk recommendation and
  Microsoft.NET.Test.Sdk dependency awareness
- Fix Assert.AreEqual overload errors: removed exact error code from
  prompt, added mixed-type and interface-reference cases, rubric tests
  correct generic type parameter selection
- Handle dropped TFM: changed to multi-target (net5.0;net462;
  netcoreapp3.1), rubric tests that model knows which TFMs are still
  supported and doesn't upgrade them indiscriminately
2026-04-20 21:33:07 +02:00
Amaury Levé 1125fe7864 improve(dotnet-test): enhance agent descriptions for subagent discovery (#560)
- Add 'Use when:' trigger phrases to all 7 sub-agent descriptions
  so parent agents can reliably discover and delegate to them
- Add .testagent/ cleanup rule to generator agent to prevent
  ephemeral pipeline state from being committed
2026-04-20 19:51:09 +02:00
Amaury Levé 9ab90d6400 feat(dotnet-test): add handoffs between orchestrator agents (#561)
- test-quality-auditor -> code-testing-generator (generate missing tests)
- test-quality-auditor -> testability-migration (fix untestable code)
- testability-migration -> code-testing-generator (test migrated code)
- test-migration -> test-quality-auditor (audit after migration)

Enables guided sequential workflows between agents with suggested
next steps, per VS Code custom agent handoff pattern.
2026-04-20 19:36:44 +02:00
github-actions[bot] 3aa1128ca9 chore: upgrade gh-aw runtime (#557)
* chore: upgrade gh-aw runtime

* chore: recompile gh-aw workflows

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jan Krivanek <jankrivanek@microsoft.com>
2026-04-20 17:34:47 +02:00
Jan Krivanek 1dc3d36f9b Fix gh-aw upgrade workflow to work with GITHUB_TOKEN (#554)
GITHUB_TOKEN cannot push commits that modify files under .github/workflows/.
This is a hard GitHub platform restriction (requires workflows scope, which
is only available via PAT or GitHub App tokens).

The workflow now:
- Runs gh aw upgrade (without --create-pull-request)
- Categorizes changes into pushable (outside .github/workflows/) and
  non-pushable (inside .github/workflows/)
- Creates a PR with only the pushable changes (e.g. actions-lock.json)
- Documents any workflow files that need manual recompilation in the PR body
  with instructions for running gh aw compile locally

Tested successfully on https://github.com/JanKrivanek/skills2/pull/1
2026-04-20 17:00:33 +02:00
Copilot c14d90d28e Align MSTest v2→v3 eval assertions/rubric with fixture semantics (#550)
* Initial plan

* Align MSTest v2->v3 eval rubric with fixture assertions

Agent-Logs-Url: https://github.com/dotnet/skills/sessions/055e6526-4b7d-4457-9004-2c8c99969cd1

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>
2026-04-20 14:59:37 +02:00
Copilot a4927f1b79 Align writing-mstest-tests skill routing with anti-pattern disambiguation (#553)
* Initial plan

* fix(dotnet-test): align writing-mstest-tests routing with anti-pattern skill

Agent-Logs-Url: https://github.com/dotnet/skills/sessions/eb70209e-8e7a-4b49-820d-65e0e3fcaedc

Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Evangelink <11340282+Evangelink@users.noreply.github.com>
2026-04-20 14:59:26 +02:00
Amaury Levé 17df9a10eb Fix code-testing-agent eval timeout by removing unused NuGet packages (#551)
The ContosoUniversity test fixture had 17 unused NuGet packages (bootstrap,
jQuery, Modernizr, Antlr4, WebGrease, Microsoft.Build.Tasks.Core, etc.)
that bloated NuGet restore and build time. The multi-agent test generation
pipeline performs multiple build/test cycles, causing cumulative delays
that exceeded the 2400s scenario timeout on CI.

Changes:
- Remove 17 unused PackageReference entries from ContosoUniversity.csproj
- Remove stale ItemGroup entries (Global.asax, Scripts, compile removes)
- Remove NU1701 warning suppression (no longer needed)
- Increase command_timeout from 180s to 300s for dotnet test assertion
  (accounts for first-time restore + build + test + coverage collection)
2026-04-20 12:53:45 +00:00
Amaury Levé b8aacbabd1 Add Cursor plugin marketplace support (#549)
Add .cursor-plugin/marketplace.json for Cursor IDE plugin discovery.

Update README.md with Cursor installation instructions.

Fixes #523
2026-04-20 14:51:25 +02:00
Amaury Levé 7a2e91ce94 Fix mtp-hot-reload eval timeouts by removing expect_tools: bash (#546)
The 5 failing scenarios were timing out because expect_tools: [bash]
forced the agent to execute terminal commands. The hot reload workflow
involves 'dotnet run' which starts a test host that blocks indefinitely
waiting for file changes, causing the scenario to exhaust its timeout.

These scenarios test whether the model provides correct guidance (package
name, env var, commands), not whether it actually executes them. The
output_matches assertions already verify the response content.

Removed expect_tools from:
- Suggest hot reload for failing test in MTP project (SDK 9)
- Suggest hot reload for failing test in MTP project (SDK 10)
- Enable hot reload when package already installed
- Suggest launchSettings.json configuration for hot reload
- Negative: VSTest project cannot use MTP hot reload

Also reduced timeouts since scenarios no longer need to wait for command
execution.
2026-04-20 12:12:39 +02:00
Amaury Levé 400661df09 run-tests: add critical rules, detection guidance, and troubleshooting (#514)
* run-tests: add critical rules, detection guidance, and troubleshooting

- Add 'Critical Rules' table to prevent cross-platform VSTest/MTP mistakes
- Expand Step 1 detection with explicit file-by-file lookup table
- Add 'dotnet --version' as first detection action
- Add Troubleshooting section with 7 common error patterns
- Expand Common Pitfalls from 3 to 7 entries
- Strengthen negative guidance for SDK version-specific syntax

* Improve description

* Improve evaluation

* Add expected and rejected tools

* Change

* Improve do not use sections

* Improve prompt

* Increase eval timeouts for scenarios hitting the limit

- run-tests: trx reporting MTP SDK 9 (360s -> 480s)
- run-tests: blame-hang MTP SDK 10 (300s -> 420s)
- run-tests: combine filter criteria VSTest (180s -> 300s)
- mtp-hot-reload: hot reload SDK 9 (360s -> 480s)
- mtp-hot-reload: hot reload filter (180s -> 300s)
- code-testing-agent: ContosoUniversity (1800s -> 2400s)
2026-04-20 10:09:15 +02:00
Jan Krivanek ba3bcf122b Fix: add workflows permission, remove temp file creation (#545) 2026-04-20 09:35:32 +02:00
Amaury Levé f46275e64e Add evaluation tests for test-migration and test-quality-auditor agents (#543)
test-migration eval (4 scenarios):
- Auto-detect MSTest v2 on VSTest and recommend migration path
- Detect xUnit v2 and route to xUnit v3 migration
- Execute targeted MSTest v2 to v3 migration
- Non-activation: decline test writing request

test-quality-auditor eval (4 scenarios):
- Comprehensive audit of weak test suite (multi-skill pipeline)
- Targeted anti-pattern review
- Assertion quality analysis
- Non-activation: decline test generation request

Includes fixture projects with intentional quality issues:
- MSTest v2 project on VSTest for migration detection
- xUnit v2 project for migration detection
- ShoppingCart test suite with anti-patterns (assertion-free, tautological,
  catch-and-swallow, Thread.Sleep, shallow assertions, missing coverage)
2026-04-17 20:29:24 +02:00
Amaury Levé 9792d18080 Add markdownlint analysis for local dev and CI (#534)
* Add markdownlint analysis for local dev and CI

- Add .markdownlint.jsonc with rule configuration
- Add .markdownlint-cli2.jsonc with ignore patterns
- Add package.json with markdownlint-cli2 and lint scripts
- Add GitHub Actions workflow running on PRs touching *.md files
- Add VS Code extension recommendation for vscode-markdownlint

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Address review comments: use markdownlint-cli2-action, merge configs, lint only changed files

- Replace manual Node.js + npm setup with DavidAnson/markdownlint-cli2-action (pinned to SHA)
- Use tj-actions/changed-files to lint only PR-changed markdown files
- Merge .markdownlint.jsonc into .markdownlint-cli2.jsonc (single config file)
- Remove package.json and package-lock.json (no longer needed)

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-17 20:17:33 +02:00
Amaury Levé d7b80a806b Fix SDK 9.0.200 global.json pinning causing eval timeouts (#542)
Add rollForward: latestFeature to all global.json entries that pin SDK 9.0.200
so that any 9.0.xxx SDK satisfies the requirement. Without this, machines with
only 9.0.3xx installed fail all dotnet commands during evaluation, causing the
model to burn its entire timeout budget on failed bash retries.
2026-04-17 18:07:33 +00:00
Amaury Levé c18d4260de Fix timeout in MSTest.Sdk v3-to-v4 eval scenario 9 (#544)
The fixture csproj had MSTest.Sdk/3.8.0 while the prompt claimed the user
already upgraded to 4.1.0. This mismatch caused the model to edit the
csproj and run dotnet build, triggering slow MSTest SDK NuGet downloads
that exceeded the 240s timeout on CI.

- Update fixture csproj to MSTest.Sdk/4.1.0 to match the prompt
- Add specific CS error codes to the prompt so the model provides direct
  fixes instead of building
- Update rubric item to reflect the project already being on 4.1.0
2026-04-17 18:05:14 +00:00
Amaury Levé 7791735b60 Add test-quality-auditor hub agent for .NET test suite analysis (#541)
* Add test-quality-auditor hub agent for .NET test suite analysis

Introduces a new test-quality-auditor agent that triages test quality
concerns to specialized analysis skills: assertion quality, test smells,
anti-patterns, mock usage, test gaps, maintainability, coverage risk,
and test tagging. Includes a comprehensive audit pipeline that chains
multiple skills for broad health checks.

* Address Copilot review: clarify diagnostic role and coverage routing

- Reword intro to acknowledge file-modifying workflows (test tagging)
  are only used with explicit user confirmation
- Clarify coverage-analysis vs crap-score: prefer coverage-analysis for
  project-wide analysis, reserve crap-score for targeted method/class scope
2026-04-17 17:54:33 +00:00
Amaury Levé f9d7faf0ee Add test-migration hub agent for .NET test framework and platform migrations (#540)
* Add test-migration hub agent for .NET test framework and platform migrations

Introduces a new test-migration agent that auto-detects the current test
framework, version, and platform, then routes to the appropriate migration
skill (MSTest v1/v2→v3, v3→v4, xUnit v2→v3, VSTest→MTP). Handles
multi-step migrations with commit boundaries between steps.

* Align framework detection with platform-detection skill

Address Copilot review: MSTest requires metapackage, Sdk, or both
TestFramework+TestAdapter (not either alone). Add missing xUnit MTP
package variants.
2026-04-17 19:53:32 +02:00
Jan Krivanek 05e2868b00 Reintroduce copilot sessions storing (#530) 2026-04-17 12:58:15 +00:00
Jan Krivanek e294085cf0 Automate GH AW updates (#536) 2026-04-17 14:45:11 +02:00
Amaury Levé 9f20782332 Add *.lscache to .gitignore and untrack cached files (#539) 2026-04-17 14:36:43 +02:00
Amaury Levé 54cdb7ebca Add skill-coverage PR workflow with slash command support (#538)
* Add skill-coverage PR workflow with slash command support

- Auto-triggers on PRs that change plugins/** or tests/**
- Detects specific plugin/skill pairs from the PR diff
- Runs Measure-SkillCoverage.ps1 and posts a coverage report as a PR comment
- Supports /skill-coverage slash command on PR comments:
  /skill-coverage              (runs on changed skills in the PR)
  /skill-coverage <plugin>     (runs on all skills in the plugin)
  /skill-coverage <plugin> <skill>  (runs on a specific skill)

* Address Copilot review: security, permissions, and robustness fixes

- Add permission check: require write access before running slash command
- Tighten /skill-coverage matching to avoid false triggers on similar commands
- Add issues: write permission (PR comments use Issues API)
- Use refs/pull/<num>/head for checkout to support fork PRs
- Remove unused \ variable
- Fix multi-line JSON parsing with Out-String

* Address PR #538 review: fork PR handling, reactions, and sourcing note

- Skip PR comment posting for fork PRs (read-only token); coverage still runs in step summary
- Add continue-on-error to reaction step to avoid 403 failures
- Add header comment noting issue_comment trigger sources from default branch
- Add continue-on-error to no-changes comment step

* Split into analyze + comment jobs; fix pagination and dedup

Security:
- Split into two jobs: analyze (contents: read only) and comment (write only)
- Analyze job checks out base branch for trusted tooling, PR head into
  a separate git worktree - untrusted PR code is never executed
- Comment job only reads an uploaded artifact, no PR code checkout

Fixes:
- Use github.paginate() for listComments to handle PRs with >100 comments
- Deduplicate targets: plugin-wide changes replace per-skill targets for
  that plugin instead of producing duplicates
2026-04-17 12:55:33 +02:00
Jan Krivanek 6ebb5616b2 Support checking skills and agents at single invocation (#533) 2026-04-17 08:32:42 +00:00
Jan Krivanek 74cf19f605 Update gh-aw (#532) 2026-04-17 09:52:44 +02:00
Amaury Levé dd37cd3bb6 Add skill coverage measurement tool (#509)
Introduce Measure-SkillCoverage.ps1 under eng/skill-coverage/ that
measures how much of a SKILL.md's teaching content is verified by
eval.yaml test scenarios — analogous to code coverage for skill files.

The script extracts testable 'coverage points' from four structural
sections of a skill file (Validation checklist, Common Pitfalls,
Workflow Steps, and code patterns from fenced blocks), then
cross-references them against eval.yaml assertions and rubric
criteria using regex matching and keyword overlap heuristics.

Features:
- Per-skill and aggregate (-All) analysis across all plugins
- Table output with colored pass/fail and per-category percentages
- JSON output for machine consumption (single object or array)
- Distinguishes deterministic assertions from rubric-only coverage
- MinCoverage threshold for CI gating
- Tracks source line numbers for all coverage point categories
2026-04-16 19:31:55 +02:00
Jan Krivanek 9f2c53f68e Fix the DevOps health dashboard grooming (#529)
* Improve the groomer

* Cleanup the daily health issue
2026-04-15 19:01:40 +02:00
Artur Spychaj 3dbe832796 Add 'dotnet sln add' step to code-testing-implementer (#522)
* Add 'dotnet sln add' step to code-testing-implementer

When a new test project is created, register it with the solution
file using 'dotnet sln add' so that 'dotnet test <solution>'
discovers the tests.

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

* Address review: improve dotnet sln add guidance

- Use solution identified in research/plan rather than searching
- Account for .slnf solution filter scenarios
- Prefer 'dotnet test --solution' over 'dotnet test <solution>'

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

* Move dotnet sln add guidance to dotnet.md extension

The implementer is polyglot, so 'dotnet sln add' doesn't belong
there. Replace with a generic 'register with build system' step
that defers to extensions/, and add the .NET-specific detail
(sln/slnx/slnf handling) to extensions/dotnet.md.

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

* Address review: fix solution registration guidance in dotnet.md

- Include .slnf in 'don't substitute' warning alongside .sln/.slnx
- Qualify '--solution' flag as SDK 10+/MTP-only; fall back to
  positional form for older SDKs

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-15 14:38:03 +02:00
dependabot[bot] 7079f6c3ae Bump the github-actions-dependencies group with 3 updates (#526)
Bumps the github-actions-dependencies group with 3 updates: [actions/github-script](https://github.com/actions/github-script), [actions/cache](https://github.com/actions/cache) and [actions/upload-artifact](https://github.com/actions/upload-artifact).


Updates `actions/github-script` from 8.0.0 to 9.0.0
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/ed597411d8f924073f98dfc5c65a23a2325f34cd...3a2844b7e9c422d3c10d287c895573f7108da1b3)

Updates `actions/cache` from 5.0.4 to 5.0.5
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/668228422ae6a00e4ad889ee87cd7109ec5666a7...27d5ce7f107fe9357f9df03efb73ab90386fccae)

Updates `actions/upload-artifact` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions-dependencies
- dependency-name: actions/cache
  dependency-version: 5.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions-dependencies
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-15 09:46:36 +02:00
dependabot[bot] 665062de79 Bump the microsoft-and-system group with 4 updates (#527)
Bumps Microsoft.Bcl.Memory from 10.0.5 to 10.0.6
Bumps Microsoft.Data.Sqlite from 10.0.5 to 10.0.6
Bumps Microsoft.Extensions.FileSystemGlobbing from 10.0.5 to 10.0.6
Bumps System.CommandLine from 2.0.5 to 2.0.6

---
updated-dependencies:
- dependency-name: Microsoft.Bcl.Memory
  dependency-version: 10.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-and-system
- dependency-name: Microsoft.Data.Sqlite
  dependency-version: 10.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-and-system
- dependency-name: Microsoft.Extensions.FileSystemGlobbing
  dependency-version: 10.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-and-system
- dependency-name: System.CommandLine
  dependency-version: 2.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-and-system
- dependency-name: Microsoft.Bcl.Memory
  dependency-version: 10.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-and-system
- dependency-name: Microsoft.Data.Sqlite
  dependency-version: 10.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-and-system
- dependency-name: Microsoft.Extensions.FileSystemGlobbing
  dependency-version: 10.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-and-system
- dependency-name: System.CommandLine
  dependency-version: 2.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: microsoft-and-system
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-15 09:46:15 +02:00
Jan Krivanek e6f416848c Fix the repo path traversal check (#525) 2026-04-14 16:52:02 +00:00
Jan Krivanek 292a4bcfa3 Add --allow-repo-traversal and remove body line count checks (#524)
* Add validator options

* Address PR review: validate options and add tests

- Reject --allow-repo-traversal with --plugin mode (plugins must be portable)
- Validate --max-declaration-lines and --max-agent-lines are positive integers
- Add unit tests for MaxDeclarationLines override in SkillProfiler
- Add unit tests for AllowRepoTraversal suppression and depth check preservation
- Add unit tests for MaxAgentLines override and fallback to MaxDeclarationLines

* Remove body line count checks and --max-declaration-lines/--max-agent-lines options

Line count checks are redundant with BPE token-based complexity classification,
which already provides better guidance. Keep --allow-repo-traversal only.

* Address review: remove unused CheckOptions from AgentProfiler, fix traversal test

- Remove unused CheckOptions parameter from AgentProfiler.AnalyzeAgent and
  RunAgentsCheckCore since line checks were removed
- Fix AllowRepoTraversalSuppressesParentTraversalError test to use a non-deep
  path (../SKILL.md) and assert no file-ref errors at all
2026-04-14 13:14:08 +00:00