skills/project-inspection/SKILL.md
MSBuild and project-file inspection. Use when: debugging TargetFramework, OutputPath, package references, item includes, or evaluated MSBuild properties for a .csproj.
npx skillsauth add darylmcd/Roslyn-Backed-MCP project-inspectionInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You answer "what does MSBuild think this project is?" using evaluate_msbuild_property, evaluate_msbuild_items, and get_msbuild_properties.
Resolve:
workspaceId (active session)projectFilePath (.csproj or relevant project file)TargetFramework) or item type (e.g. PackageReference)Use roslyn://server/catalog under project-mutation / configuration. MCP prompt msbuild_inspection emits a checklist for this workspace + project path.
evaluate_msbuild_property.evaluate_msbuild_items with the item type.get_msbuild_properties (large — filter to what matters).workspace_reload before trusting compilation or symbol tools.Invoke with --validate-shape or ask "is this project set up right?". The skill runs a consistency sweep over one project (or every project in the workspace) and flags common defaults-drift.
For each project, check:
| Check | Default expected | Signal when missing/inconsistent |
|-------|------------------|----------------------------------|
| TargetFramework / TargetFrameworks | Present; matches solution-wide convention when one exists | Orphan or legacy TFM (e.g., net462 in a mostly-net8.0 solution) |
| Nullable | enable recommended for new code | disable or missing on a library in an otherwise-nullable solution |
| ImplicitUsings | enable for SDK-style projects | Missing / disabled |
| LangVersion | Implicit (inherits from TFM) | Pinned to an old version (latest or a specific version below what TFM allows) |
| TreatWarningsAsErrors | Typically true for production libraries | Missing in a library where siblings enable it |
| GenerateDocumentationFile | true for packable libraries | Missing when IsPackable=true |
| IsPackable | false for test/sample projects | true on a project whose name ends .Tests / .Samples |
| OutputType | Library by default; Exe only for hosts | Exe in a project consumed as a package dependency |
| RootNamespace vs folder path | Aligned | Drift (package extracts from a folder that doesn't match namespace) |
| AssemblyName vs PackageId (packable) | Typically equal | Divergent without explicit intent |
| Project references in SDK-style | Use <ProjectReference> | Direct <Reference> assembly paths indicate legacy style |
Workflow:
evaluate_msbuild_property for each of the properties above (per project).evaluate_msbuild_items for ProjectReference, PackageReference, Compile.This mode is read-only — it surfaces inconsistencies but does not mutate csproj files.
This skill is read-only. Package and project edits use add_package_reference_preview, apply_project_mutation, etc., only when the user asks to change files.
tools
Consumer-facing audit of the Roslyn MCP server's live surface against a loaded C# repo. Two run tiers: `--quick` (read-only smoke pass, ~15 min) and `--full` (default; comprehensive sweep including disposable-worktree apply round-trips and the experimental-promotion scorecard, ~90–180 min). Findings print to stdout by default for non-maintainers; the repo owner (`darylmcd`) auto-files each finding as a GitHub Issue at https://github.com/darylmcd/Roslyn-Backed-MCP. Pass `--auto-file` to force-enable or `--no-auto-file` to force-disable. Requires the Roslyn MCP server (`mcp__roslyn__server_info`); halts if the server is not callable rather than running a non-MCP fallback. Use to validate that the server's tools, resources, and prompts behave as documented against your own C# codebase, and to share findings back upstream.
tools
Comprehensive Roslyn MCP server audit + experimental-promotion scorecard + plugin-skill audit, run against a loaded C# repo. Three modes — `full`, `promotion-only`, `read-only`. Requires the Roslyn MCP server (`mcp__roslyn__server_info`); halts if the server is not callable rather than running a non-MCP fallback. Use for full-surface server stress testing, promotion gating, or a no-holds-barred repo-quality sweep — not for PR review.
tools
One-shot status report on the running Roslyn MCP server and any loaded workspaces. Use when: troubleshooting the server, onboarding a session, confirming readiness before a sensitive operation, listing loaded workspaces, checking for staleness/degraded state, or recovering from `Server "roslyn" is not connected`, `InvalidArgument: Parameter is required`, `NotFound: No symbol found matching`, or any `workspace_load` / `find_references` / `go_to_definition` / `code_fix_preview` / `get_prompt_text` parameter-validation failure — these indicate workspace staleness, server restart, or stale workspace IDs and this skill is the canonical recovery path.
development
Multi-project version bump across a .NET solution. Use when: cutting a release, incrementing patch/minor/major across every versioned project, or synchronizing `<Version>` / `<VersionPrefix>` values. Takes a bump type (patch, minor, or major) as input. Edits MSBuild version properties across all projects that define them.