* fix: validate native Codex plugin support
Separate Codex-compatible plugin components from GitHub Copilot custom agents, validate Codex manifest fields and MCP shapes, and document the native agent installation boundary.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix: strengthen Codex plugin verification
Validate Codex MCP per-tool settings and add a pinned native smoke lane that installs the marketplace, discovers skills and MCP, and calls binlog_overview.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix: avoid restarting Codex MCP smoke client
Use the real tool call as the app-server initialization so the Linux smoke test does not start and tear down a redundant status client first.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix: harden Codex validation and smoke cleanup
Constrain smoke artifacts to a dedicated child directory, validate Codex manifest field shapes and required skill paths, and document the separate Agents SDK handoff model.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix: align Codex smoke and hooks parsing
Use the clean Codex installation's default provider for the direct MCP call and reject heterogeneous hooks arrays like the runtime parser.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix: verify every Codex plugin skill
Compare native skill discovery with the full repository inventory, match Codex lexical path rejection, and allow null optional MCP tool settings.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* fix: address Codex compatibility review
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
* Improve dotnet-template-engine plugin: accuracy, dedup, and two new skills
Fix inaccurate reserved-shortName guidance, consolidate validation rules into
a single skill, expand discovery mappings, add explicit CPM/version steps, and
introduce template-comparison and template-smart-defaults skills.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix .codex-plugin manifest indentation; add evals for new skills
Make .codex-plugin/plugin.json byte-consistent with plugin.json (2-space
indent on the agents line). Add eval.yaml + eval.vally.yaml capability
evals for the new template-comparison and template-smart-defaults skills.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address PR review: source reserved list from dotnet new --help, note workload/package availability, tighten version-refresh
- Clarify the reserved shortName set is the current dotnet new subcommands
(authoritative source: dotnet new --help); create is verified as a real
subcommand (alias behind dotnet new <template>).
- template-discovery: note that some mapped short names (maui, winui3, aspire,
func, orleans) need workloads/template packages, with fallback to
dotnet new list/search.
- template-instantiation: keep template versions by default; if refreshing,
use dotnet list package --outdated + user confirmation and constrain to
same major/minor rather than always latest stable.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address 2nd review round: enforce eval negatives, split combined assertion, reframe reserved list
- smart-defaults evals: enforce --no-https absence (auth scenario), absence of
minimal-API flag (controllers scenario), and no newer --framework TFM when
net8.0 is explicitly required, using output_not_contains/output_not_matches.
- comparison eval: split the combined (auth|aot|docker|controllers) check into
four separate output_matches assertions so partial comparisons fail.
- template-validation/authoring: reframe the reserved shortName list as
non-exhaustive examples and source the authoritative set from dotnet new --help;
drop the specific create-alias assertion in favor of parsing-ambiguity wording.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Make template-comparison evals robust to CI SDK currency
Switch the Blazor comparison scenario from blazorserver (absent in the CI
SDK) to blazor (Blazor Web App) vs blazorwasm, both reliably present in
.NET 8+, and instruct the agent to inspect each via --help. Update the
SKILL.md example reference for currency.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add CLI-failure resilience guidance to discovery/comparison skills
The isolated eval runs failed because the agent ran 'dotnet new <t> --help',
hit the template engine's global-mutex/persistence error (common when the
command runs concurrently in a sandbox), and then returned no answer at all.
Instruct both skills to run 'dotnet new' calls sequentially, retry once on a
transient mutex/persistence error, and fall back to the intent/parameter
mapping so a concrete answer is always produced instead of empty output.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address PR review: accurate flags + robust negative-assertion prompts
- template-smart-defaults SKILL.md: drop the non-existent --publish-aot
flag. Clarify --aot is a dotnet new flag only on templates that expose it
(console/worker/grpc, not webapi) and that publish-time AOT is the MSBuild
PublishAot=true property, not a dotnet new flag.
- template-discovery SKILL.md: replace the hardcoded --enable-docker mapping
(not a real flag on common templates) with generic 'confirm with --help'.
- smart-defaults evals: tighten the negative-assertion prompts to output only
the command line and not mention unused flags, so a negated explanation
can't trip output_not_contains/output_not_matches. Switch the AOT scenario
from webapi to worker (which actually supports --aot).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address PR review round 3: scope negative checks, de-emphasize stale lists
- smart-defaults evals: anchor the negative assertions to the 'dotnet new'
command line (same-line regex) instead of whole-output substring/regex, so a
flag mentioned only in prose can't fail the test.
- template-validation / template-authoring: mark the dotnet new subcommand
examples as illustrative/version-dependent and tell readers not to hardcode
them; the live 'dotnet new --help' output is canonical.
- template-comparison: fix the example table's AOT row — webapi/webapp do not
expose a --aot template flag; native AOT is publish-time via PublishAot.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The Codex CLI requires .codex-plugin/plugin.json as the plugin manifest
entry point. Without it, 'codex plugin add' fails with 'missing plugin.json'
even though the marketplace listing works.
This adds .codex-plugin/plugin.json to all 14 plugin directories, with paths
relative to the plugin root per the Codex docs. Also updates the agents
marketplace to use dotnet-aspnetcore (per #711 rename) and adds missing
dotnet-blazor and dotnet11 entries.
Fixes#578Fixes#724
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>