Matthew Hagrelius's deep code review process — a staff-level review emphasizing maintainability, reliability in distributed flows, observability, side-effect isolation, foreseeable failure scenarios, understandability, and test quality. Calibrates severity to project maturity (sprint-2 vs pre-GA vs mature prod) so the review doesn't over-call. Tags each finding with a disposition (Blocker / Nice-to-fix / Follow-up ticket / Discussion) and uses matching framing language so PR authors know what's a gate vs a future-ticket ask. Can publish selected findings as inline comments on Azure DevOps PRs via the REST API. Trigger this skill whenever Matthew asks for a "deep code review", "deep review", "thorough review", "review this the way I do it", "my code review", "Matthew-style review", or any review where he wants more than a quick security/perf pass — including requests like "look at this PR end-to-end", "what will break in prod", "poke holes in this change", "check the failure modes", "audit observability on thi
Use when building command-line interface tools; when choosing argument parsing libraries; when handling stdin/stdout/stderr patterns; when implementing subcommands; when tests for CLI apps fail or are missing
Use when building MCP servers in TypeScript, Python, or C#; when implementing tools, resources, or prompts; when configuring Streamable HTTP transport; when migrating from SSE; when adding OAuth authentication; when seeing MCP protocol errors
Use when building distributed apps with Aspire; orchestrating .NET, JavaScript, Python, or polyglot services; when environment variables or service discovery aren't working; when migrating from .NET Aspire 9 to 13+ or Community Toolkit; when seeing AddNpmApp deprecated errors; when OTEL not appearing in dashboard; when ports change on restart breaking OAuth; when configuring MCP server for AI assistants; when debugging Aspire apps and need to check resource status or logs
Use when building AI agents with Microsoft Agent Framework (Semantic Kernel + AutoGen unified); when implementing memory or context providers; when threads won't deserialize; when workflow checkpointing fails; when migrating from Semantic Kernel or AutoGen; when seeing ChatAgent or AgentThread errors
Use when writing, debugging, or reviewing Playwright tests for web apps; before writing test code; when tests are flaky, slow, or brittle; when seeing timeout errors, element not found, or race conditions; when using getByRole, locators, or assertions
Use when user requests research requiring multiple sources, comprehensive analysis, or synthesis across topics - technical research, domain knowledge gathering, market analysis, or learning about complex subjects
Use when designing, implementing, or modifying UI for GNOME apps; before writing UI code; when reviewing existing UI for HIG compliance; when working with GTK 4/libadwaita or styling Qt/PySide6 for GNOME