vsadov/satori/system-net-review
Claude Code and agent skill by vsadov/satori
- community
Checking that the SKILL.md file is still in the repository.
Guidance for writing and modifying System.Net networking code in dotnet/runtime. Covers resource lifecycle, connection pooling, cross-platform interop, protocol compliance, async patterns, and security posture. For full code review, delegates to the @system-net-review agent. Trigger words: system.net, networking, http client, sockets, ssl, tls, quic, http2, http3, socketshttphandler, sslstream, connection pool.
Install
npx vskill@latest install vsadov/satori/system-net-reviewSKILL.md
Writing & Reviewing System.Net Code
This skill provides implementation guidance when writing or modifying code under src/libraries/System.Net.*, src/libraries/System.Private.Uri, and networking-related files in src/libraries/Common/src. It also serves as a review trigger for System.Net changes.
Scope
Applies to all System.Net.* libraries, System.Private.Uri, and shared networking code in Common/src. For general dotnet/runtime conventions, defer to the path-scoped files under .github/instructions/ (style, tests), the build-and-test skill (build and test workflow), and the code-review skill.
Review Delegation
When reviewing a PR or code change that touches System.Net code, invoke the `@system-net-review` agent as a sub-task. The agent carries the full structured checklist with severity-weighted routing and per-folder hotspot coverage. This skill provides the decision frameworks and coding patterns; the agent provides the line-by-line review checklist.
When invoking from an existing reviewer agent, tell the @system-net-review to only collect feedback items and return them, do not post them to GH. The parent reviewer is responsible for collection, deduplication, and posting.
Do not duplicate the agent's CHECK items here. Use this skill for authoring guidance and the agent for review verdicts.
Decision Frameworks
1. Resource Lifecycle
Key rules:
- Every resource must have exactly one owner responsible for disposal.
Dispose()must be idempotent and never throw.- Error paths must dispose; use
try/finally, not justusingon the happy path.
2. Connection Pooling
Key rules:
- Never hold a lock while performing I/O or awaiting.
- Connections returned to pool must be in a reusable state (no partial reads, no pending writes).
- Pool disposal must drain all waiters and close all connections.
- Prefer
Interlockedoperations overlockfor counters on hot paths.
3. Cross-Platform Interop
Key rules:
- Platform-specific code belongs in
.Windows.cs/.Unix.cs/.OSX.cspartial files. - All
Interop.declarations live underCommon/src/Interop/<platform>/. - Test on all platforms via
ConditionalFact/ConditionalTheorywithPlatformDetection.
4. Protocol Compliance
Key rules:
- Follow the relevant RFC strictly (RFC 9110/9112 for HTTP, RFC 9000/9001 for QUIC).
- Protocol violations from the peer must produce clear exceptions, not silent corruption.
- Version-specific behavior must be gated on
HttpRequestMessage.Versionor negotiated ALPN.
5. Async Patterns
Key rules:
- Cancellation must interrupt I/O promptly, not just check at the next loop iteration.
ValueTaskmust not be awaited more than once or stored.- See the agent's async CHECK items for the full list.
6. Security Posture
Key rules:
- Security settings must be secure by default; opt-out must be explicit and documented.
- Validate all TLS configuration before handshake; fail early with clear
AuthenticationException. - See the agent's security and diagnostics CHECK items for the full list.
Code Patterns
NetEventSource Tracing
Socket Async Operations
Connection Pool Return
SslStream Configuration
Buffer Handling
HTTP/2 Flow Control
Cancellation Plumbing
Testing Guidance
LoopbackServer Pattern
System.Net functional tests use in-process loopback servers to avoid real network dependencies. Choose the right one:
| Server | Use For | |
|---|---|---|
LoopbackServer | HTTP/1.1 tests (raw request/response control) | |
Http2LoopbackServer | HTTP/2 frame-level tests | |
Http3LoopbackServer | HTTP/3 / QUIC tests | |
LoopbackProxyServer | Proxy behavior tests |
Conditional Attributes
Test Conventions
- Tests must clean up all sockets, streams, and servers — wrap in
using/await using. - Stress tests live under
tests/StressTests/; don't add long-running loops to functional tests. - General test conventions (prefer existing files,
[Theory]over[Fact]) are in.github/instructions/tests.instructions.md.
Reference Links
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.github/skills/system-net-review/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/vsadov/satori/system-net-review)