Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
翻訳待ち
Drive a Windows desktop application from a test, and report what was actually observed. On nuget.org for .NET 10. Four verdicts, one locator grammar, patterns before pointers, and a picture that prove
翻訳待ち
開発ツールC# · JavaScriptGitHub @alegaussオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
Drive a Windows desktop app from a test and report what was actually observed. Four verdicts rather than two, so a check that never ran is never reported as one that passed. UI Automation and Win32, .NET 10, no external dependency.
翻訳待ち
Loading the full README.
Read the full README ↗Tests for a Windows desktop app that Claude Code writes as data, and a verdict that never calls a check green when it did not run.
claude plugin marketplace add alegauss/winwright --scope project
claude plugin install winwright@winwright --scope project
Windows · .NET 10 · two NuGet packages, no external dependency · Apache-2.0
alegauss.com/winwright: the short version of the argument. This file is the long one.
.cases.json file. The waits, the retries and the verdict belong to the engine, so two cases never
carry two copies of the same loop.2, not 0. A suite that lost 22 of its 374 tests and
still reported a pass is why this exists.winwright_check reads a case against the loader's own schema before
the file exists, so a misspelled key is refused with its address, not discovered on a red run.Unofficial / community project. Not affiliated with, endorsed by, or sponsored by Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic.
Run the two commands above in the repository that drives the application. Both write into that
repository's .claude/settings.json, so committing that file wires every clone.
The MCP server and the guard are .NET processes, and the release carries them built. The first
session after an install or an update downloads them for the plugin's version from the GitHub
Release, checks the zip against its published SHA-256, and unpacks it into
%LOCALAPPDATA%\winwright\plugin\<version>, outside the plugin's clone. The machine needs the
Windows Desktop Runtime 10 (the SDK carries
it), not the SDK itself. The guard reads that folder and downloads nothing, so in the first few
seconds of the first session it may say it is not there yet.
A network that cannot reach github.com can point WINWRIGHT_RELEASES at a folder or a mirror
holding the release's winwright-plugin-<version>-win-x64.zip and its .sha256. Where the
download fails, or the runtime is missing, stderr names what is missing, and building the plugin's
clone with dotnet build -c Release is the way round it: a local build is always preferred over a
downloaded one.
The marketplace is named winwright, after the plugin, so it sits beside roadkeep's alegauss
instead of replacing it. If your settings still carry winwright@alegauss, remove that entry and
its marketplace, then run the two commands above.
Windows only, .NET 10 (net10.0-windows). The in-app half needs <UseWPF>true</UseWPF>.
<!-- In the test project that drives the application. -->
<PackageReference Include="Winwright" Version="1.1.9" />
<!-- In the application under test, only if you want the readings it can only take from inside. -->
<PackageReference Include="Winwright.InApp" Version="1.1.9" />
Winwright.InApp is optional: every reading and every pattern act runs against an application
that references nothing. See what needs cooperation.
The badges above are read from the feed; the version in these lines is typed, so trust the badge
where the two disagree.
If your application's .csproj is at the repository root, add one line to it:
<DefaultItemExcludes>$(DefaultItemExcludes);tests\**</DefaultItemExcludes>
Without it the SDK's default globs compile the driving project's sources into the application,
and the build stops with CS0579 duplicate-attribute errors that point at your own
obj\…\AssemblyInfo.cs (under UseWPF, at a <YourApp>_<random>_wpftmp project), with nothing
naming the folder that caused it. samples/Adopter fails that way on purpose when the line is
removed.
Declare the application once, in winwright.json at the repository root (every key is optional;
Declaring a project has them all):
{ "executable": "bin/{configuration}/net10.0-windows/YourApp.exe", "configuration": "Debug" }
Then ask Claude Code for the behaviour you want held, in plain words:
Write a case that opens the Profiles tab, renames the profile to Beta, saves, and checks the status reads Saved.
Run the smoke cases and tell me what did not run.
Claude reads the format and the acts from the plugin's tools, writes the case into a
.cases.json file, checks it with winwright_check and runs it with winwright_run. The answer
is the verdict, a line per case, and for a case that did not pass, each check that did not: the
step, the locator it resolved, what it read and how long it waited, so a red names what to change
without a second run. Writing a case is the full format.
This is the beginning of the README. Read the rest at the original. Read the full README ↗