WinCode is a Windows/.NET MCP assistant for background UI inspection and code intelligence. It reduces screenshot-driven computer-use overhead with structured controls, runtime states, and source evidence—supporting text-only LLMs without taking focus.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
analyze_change_impact
Estimate which code a change may affect. Return riskLevel: "UNKNOWN" and confidence: "UNCERTAIN" for ambiguous symbols, incomplete results or no references.
-
wincode_analyze_workspace
Parse solution structure and declared .sln/.csproj project references.
-
wincode_diagnose_project
Check installed SDKs, Git and the local Windows environment.
-
wincode_file_outline
Read one file's observed line/byte counts and bounded local declarations with follow-up reads.
-
wincode_find_code_symbol
Search symbols and report the provider and completeness of the results.
-
wincode_find_references
Find references using a returned symbol location; optional Roslyn limit is 1–1000 (default 100, requires symbolLocation). Both providers accept maxOutputChars (2048–32768, default 8000) for the final
-
wincode_hello_world
Read instance identity and known adapter state without spawning probes; use diagnose_project for active checks.
-
wincode_list_directory
Browse a specific workspace directory with entry, depth and output limits.
-
wincode_plan_refactoring
Suggest pre-edit checks and verification steps based on change impact.
-
wincode_prepare_context
Return code excerpts with file paths and line ranges within a character-based output limit.
-
wincode_safe_move_to_trash
Validate paths, move files to trash/ and record metadata. Cancellation before the move stops it; finalization preserves the actual completed/partial outcome even after a deadline.
-
wincode_search_text
Search literal text within exclusive files/directories; return locations, bounded previews and follow-up reads.
-
wincode_ui_inspect
Inspect UI control subtrees, interactive states, and optional numbered screenshots.
-
wincode_ui_list_windows
Enumerate visible top-level windows with title/process filters and count limits.
-
wincode_ui_review
Return explicit XAML/C# source candidates, lines, hashes and scoped next requests from one UI snapshot.
-
workspace_open
Confirm or recover the fixed workspace and return a bounded summary; reject other roots.
analyzed commit 4f4f4f7 · analyzer v33 · 1w ago
skills & prompt files 1
code files: 192
filesystem 102
- fs (weak) linnnn89-WinCode-4f4f4f7/scripts/benchmark-agent-efficiency.ts :1
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/build.mjs :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/check.mjs :1
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/delivery-manifest.mjs :1
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/lib/check-stage.mjs :1
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/lib/dotnet.mjs :1
import fs from 'node:fs'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/measure-runtime-baseline.mjs :3
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/owner-death/scenarios.mjs :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/publish-native.mjs :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/roslyn/design-time-prototypes.mjs :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/roslyn/gateway-lifecycle.mjs :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/roslyn/host-inputs.mjs :2
import fs from 'node:fs/promises';
show 28 more
- fs (weak) linnnn89-WinCode-4f4f4f7/scripts/roslyn/host-semantics.mjs :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/sync-skill.mjs :1
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/test-mcp-client.ts :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-design-time-concurrency.mjs :3
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-error-contracts.ts :3
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-failure-recovery.ts :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-manual-release.ts :3
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-mixed-load.ts :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-multi-agent.mjs :3
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-owner-death.mjs :3
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-product-tasks.ts :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-repomix-real.ts :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-roslyn-gateway.mjs :9
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-roslyn-host.mjs :11
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-shared-cache.mjs :3
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tavern-context.ts :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tray-workflow.mjs :3
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tray.mjs :3
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-ui-background.ts :2
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-ui-query.ts :3
import fs from 'node:fs/promises'; - fs (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-ui-runtime.ts :2
import fs from 'node:fs/promises'; - fs linnnn89-WinCode-4f4f4f7/src/Adapters/DesignTimeArtifacts.ts :1
import fs from 'node:fs/promises'; - fs linnnn89-WinCode-4f4f4f7/src/Adapters/FlaUiAdapter.ts :4
import fs from 'node:fs'; - fs linnnn89-WinCode-4f4f4f7/src/Adapters/RepomixAdapter.ts :3
import fs from 'node:fs/promises'; - fs linnnn89-WinCode-4f4f4f7/src/Adapters/RoslynAdapter.ts :1
import fs from 'node:fs/promises'; - fs linnnn89-WinCode-4f4f4f7/src/Core/Cache.ts :1
import fs from 'node:fs/promises'; - fs linnnn89-WinCode-4f4f4f7/src/Core/Context.ts :6
import fs from 'node:fs/promises'; - fs linnnn89-WinCode-4f4f4f7/src/Core/DotNetGraph.ts :2
import fs from 'node:fs/promises';
62 more not shown — this panel samples each group; the count above is the real total.
shell / exec 48
- shell (weak) linnnn89-WinCode-4f4f4f7/scripts/benchmark-agent-efficiency.ts :5
import { execFileSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/build.mjs :4
import { spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/delivery-manifest.mjs :4
import { spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/lib/check-stage.mjs :3
import { spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/lib/dotnet.mjs :3
import { spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/lib/owned-processes.mjs :2
import { spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/measure-runtime-baseline.mjs :6
import { spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/owner-death/scenarios.mjs :5
import { spawn } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-design-time-concurrency.mjs :6
import { spawn } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-manual-release.ts :6
import { spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-mixed-load.ts :4
import cp from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-multi-agent.mjs :7
import { spawn } from 'node:child_process';
show 28 more
- shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-product-tasks.ts :5
import { spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-repomix-real.ts :4
import cp from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-roslyn-host.mjs :13
import { spawn, spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tray-workflow.mjs :5
import { spawn, spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tray.mjs :6
import { spawn, execFileSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-ui-background.ts :5
import { spawn } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-ui-query.ts :5
import { spawn } from 'node:child_process'; - shell linnnn89-WinCode-4f4f4f7/src/Adapters/FlaUiAdapter.ts :1
import { spawn, ChildProcess } from 'node:child_process'; - shell linnnn89-WinCode-4f4f4f7/src/Adapters/RepomixAdapter.ts :2
import { spawn, ChildProcess } from 'node:child_process'; - shell linnnn89-WinCode-4f4f4f7/src/Adapters/RoslynHostClient.ts :1
import { spawn, type ChildProcessWithoutNullStreams } from 'node:child_process'; - shell linnnn89-WinCode-4f4f4f7/src/CompositeTools/ProjectDiagnostics.ts :1
import { execFile } from 'node:child_process'; - shell linnnn89-WinCode-4f4f4f7/src/Core/GitClient.ts :3
import { execFile } from 'node:child_process'; - shell linnnn89-WinCode-4f4f4f7/src/Core/ResourceManager.ts :1
import { ChildProcess, execFile } from 'node:child_process'; - shell linnnn89-WinCode-4f4f4f7/src/Gateway/TrayClient.ts :2
import { execFile } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/architecture-safety.test.ts :5
import { execFileSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/cache-budgets.test.ts :6
import { exec } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/evidence-confidence.test.ts :6
import { exec } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/fixed-workspace.test.ts :6
import { spawnSync } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/flaui-adapter.test.ts :3
import { spawn, ChildProcess } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/gateway-exit.test.ts :6
import { spawn, type ChildProcessWithoutNullStreams } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/lifecycle-cancellation.test.ts :6
import cp from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/owner-process-guard.test.ts :4
import { spawn, execFile, type ChildProcessWithoutNullStreams } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/process-failures.test.ts :7
import { execFile } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/repomix-disabled.test.ts :3
import childProcess from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/request-concurrency.test.ts :6
import { exec } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/resource-cleanup.test.ts :6
import { exec } from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/resource-identity.test.ts :3
import cp from 'node:child_process'; - shell (weak) linnnn89-WinCode-4f4f4f7/tests/runtime-cache-regressions.test.ts :6
import { execFileSync, fork, type ChildProcess } from 'node:child_process';
8 more not shown — this panel samples each group; the count above is the real total.
network 4
- net (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-multi-agent.mjs :5
import net from 'node:net'; - net (weak) linnnn89-WinCode-4f4f4f7/scripts/verify-tray.mjs :7
import net from 'node:net'; - net linnnn89-WinCode-4f4f4f7/src/Gateway/TrayClient.ts :1
import net from 'node:net'; - net (weak) linnnn89-WinCode-4f4f4f7/tests/tray-client.test.ts :3
import net from 'node:net';
declared dependencies 9
- @modelcontextprotocol/client@2.0.0
- @modelcontextprotocol/server@2.0.0
- @types/node@^22.13.9
- tsx@^4.19.3
- typescript@^5.8.2
- Microsoft.CodeAnalysis.CSharp.Workspaces@5.9.0
- Microsoft.CodeAnalysis.Workspaces.MSBuild@5.9.0
- Microsoft.Build.Locator@1.11.2
- Microsoft.Build.Framework@17.11.48
obfuscation 1
- dynamic require()/import() linnnn89-WinCode-4f4f4f7/scripts/measure-runtime-baseline.mjs :31
const { ToolRouter } = await import(${moduleUrl('Core/ToolRouter')});