VB.NET CODING AGENT SKILL REFERENCE

**Target**: Claude-Code, Codex, AI coding agents

3,891 stars

Best use case

VB.NET CODING AGENT SKILL REFERENCE is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

**Target**: Claude-Code, Codex, AI coding agents

Teams using VB.NET CODING AGENT SKILL REFERENCE should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/vbnet-coder-en/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/alexwoo-awso/vbnet-coder-en/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/vbnet-coder-en/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How VB.NET CODING AGENT SKILL REFERENCE Compares

Feature / AgentVB.NET CODING AGENT SKILL REFERENCEStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

**Target**: Claude-Code, Codex, AI coding agents

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# VB.NET CODING AGENT SKILL REFERENCE

**Target**: Claude-Code, Codex, AI coding agents
**Version**: 2026 Modern .NET
**Max Lines**: 500

---

## DETAILED REFERENCES

For detailed patterns, examples, and best practices on specific topics, see:

| Topic | File | When to consult |
|-------|------|-----------------|
| Type System | [docs/types-and-declarations.md](docs/types-and-declarations.md) | Variable declarations, nullable types, field declarations |
| Control Flow | [docs/control-flow.md](docs/control-flow.md) | If/ElseIf, Select Case, loops, Exit/Continue |
| Async/Await | [docs/async-patterns.md](docs/async-patterns.md) | Async method structure, ConfigureAwait, cancellation, Task.WhenAll |
| Error Handling | [docs/error-handling.md](docs/error-handling.md) | Exceptions, Try/Catch/Finally, IDisposable, Using statement |
| LINQ | [docs/linq-patterns.md](docs/linq-patterns.md) | Query/method syntax, common operations, deferred execution |
| Strings & Collections | [docs/strings-and-collections.md](docs/strings-and-collections.md) | String comparison/building, List, Dictionary, HashSet, arrays |
| Class Design & Patterns | [docs/class-design-and-patterns.md](docs/class-design-and-patterns.md) | Properties, constructors, interfaces, Factory, Repository, Null Object |

---

## CRITICAL COMPILER DIRECTIVES

### Mandatory File Headers

**ALWAYS include at top of every file:**

```vb
Option Explicit On
Option Strict On
Option Infer On
```

**Rationale**: Option Explicit On prevents undeclared variable usage (catches typos), Option Strict On enforces type safety (prevents implicit conversions causing runtime errors), Option Infer On enables local type inference while maintaining type safety.

**Never use**: `Option Explicit Off` or `Option Strict Off` - these create runtime errors, performance degradation, and late binding overhead.

**Project-level setting preferred**: Set in `.vbproj` file rather than per-file when possible.

---

## NAMING CONVENTIONS

### Core Rules

| Element | Convention | Example |
|---------|-----------|---------|
| **Namespace** | PascalCase, hierarchical | `CompanyName.ProductName.ComponentName` |
| **Class/Interface** | PascalCase, noun/noun phrase | `CustomerRepository`, `IPaymentProcessor` |
| **Interface prefix** | Starts with `I` | `IDisposable`, `IEnumerable(Of T)` |
| **Method** | PascalCase, verb/verb phrase | `CalculateTotal()`, `ProcessPayment()` |
| **Property** | PascalCase, noun/adjective | `CustomerName`, `IsActive` |
| **Field (private)** | _camelCase with underscore | `_connectionString`, `_maxRetries` |
| **Field (public/shared)** | PascalCase | `MaxValue`, `DefaultTimeout` |
| **Parameter/Local** | camelCase | `userId`, `itemCount` |
| **Constant** | PascalCase or UPPER_SNAKE | `MaxConnections`, `DEFAULT_TIMEOUT` |
| **Enum Type** | PascalCase, singular | `OrderStatus`, `FileMode` |
| **Enum Members** | PascalCase | `OrderStatus.Pending`, `FileMode.Read` |
| **Event** | PascalCase, verb phrase | `DataReceived`, `ConnectionClosed` |
| **Delegate** | PascalCase, ends with Handler/Callback | `EventHandler`, `DataReceivedCallback` |
| **Generic Type Param** | T + PascalCase | `TKey`, `TValue`, `TEntity` |

### Specific Guidelines

**Boolean names**: Use `Is`, `Has`, `Can`, `Should` prefixes:
```vb
Dim isValid As Boolean
Dim hasChildren As Boolean
Dim canProcess As Boolean
```

**Collection/Array naming**: Plural nouns:
```vb
Dim customers As List(Of Customer)
Dim orderIds() As Integer
```

**Async method suffix**: Always use `Async`:
```vb
Public Async Function LoadDataAsync() As Task(Of DataSet)
Public Async Function SaveCustomerAsync(customer As Customer) As Task
```

**Avoid**: Hungarian notation (`strName`, `intCount`), `My` prefix (conflicts with VB.NET `My` namespace), abbreviations unless universally known (OK: `Id`, `Xml`, `Http`; Avoid: `Mgr`, `Proc`, `Calc`).

---

## CODE LAYOUT AND STYLE

### Indentation and Spacing

- **4 spaces per indentation level** (never tabs)
- **One statement per line**
- **One blank line** between methods/properties
- **Line continuation**: Use implicit continuation (no underscore) where possible

```vb
' ✓ Implicit line continuation (no underscore needed)
Dim result = customers _
    .Where(Function(c) c.IsActive) _
    .OrderBy(Function(c) c.Name) _
    .ToList()

Dim customer = New Customer With {
    .Name = "John",
    .Email = "john@example.com",
    .IsActive = True
}

' Method parameters
Public Function ProcessOrder(
    orderId As Integer,
    customerId As Integer,
    processDate As Date) As OrderResult
```

### Comments

```vb
' Single-line comment for brief explanations

''' <summary>
''' Processes customer orders asynchronously.
''' </summary>
''' <param name="customerId">The unique customer identifier.</param>
''' <param name="cancellationToken">Token to cancel the operation.</param>
''' <returns>A task representing the async operation with the order result.</returns>
''' <exception cref="CustomerNotFoundException">Thrown when customer not found.</exception>
Public Async Function ProcessOrdersAsync(
    customerId As Integer,
    cancellationToken As CancellationToken) As Task(Of OrderResult)

    ' Implementation
End Function
```

**Avoid**: Commenting obvious code, redundant comments, commented-out code (use version control).

---

## FILE ORGANIZATION

**Standard file structure**:

```vb
Option Explicit On
Option Strict On
Option Infer On

Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Threading.Tasks

Namespace CompanyName.ProjectName.ComponentName

    ''' <summary>
    ''' Brief class description.
    ''' </summary>
    Public Class ClassName
        ' Constants
        Private Const DefaultTimeout As Integer = 30

        ' Shared (static) fields
        Public Shared ReadOnly MaxConnections As Integer = 100

        ' Private fields
        Private _connectionString As String
        Private ReadOnly _logger As ILogger

        ' Constructors
        Public Sub New(logger As ILogger)
            _logger = logger
        End Sub

        ' Properties
        Public Property Name As String

        ' Methods
        Public Function DoSomething() As Integer
            ' Implementation
        End Function

        ' IDisposable implementation if needed
        Public Sub Dispose() Implements IDisposable.Dispose
            ' Cleanup
        End Sub
    End Class
End Namespace
```

---

## PERFORMANCE CONSIDERATIONS

**Avoid boxing/unboxing**: Use generics instead of Object collections.

**String comparisons**: Use `StringComparison.Ordinal` for best performance when culture doesn't matter.

**LINQ materialization**: Call `.ToList()` only when needed; leverage deferred execution.

**Async I/O**: Always use async for file, database, network operations.

**ConfigureAwait(False)**: Use in library code to avoid sync context overhead.

**StringBuilder**: Use for concatenating >3-4 strings in loops.

**Collection capacity**: Set initial capacity for `List(Of T)` and `Dictionary(Of K, V)` when size known.

```vb
Dim customers As New List(Of Customer)(expectedCount)  ' Avoid reallocations
```

---

## COMMON ANTI-PATTERNS TO AVOID

❌ **Option Strict Off** - causes runtime errors, performance issues
❌ **Async void methods** - unobservable exceptions (except event handlers)
❌ **Blocking async code** - `.Result`, `.Wait()` cause deadlocks
❌ **Catching Exception without logging** - swallows errors
❌ **Not disposing IDisposable** - memory/resource leaks
❌ **Using == for strings** - culture-dependent, use `.Equals()` with `StringComparison`
❌ **String concatenation in loops** - O(n²) performance
❌ **Not using Using statement** - resources not released on exception
❌ **Hungarian notation** - outdated, conflicts with modern style
❌ **Magic numbers** - use named constants
❌ **Deep nesting** - extract methods, early returns

---

## AGENT-SPECIFIC GUIDANCE

**When generating VB.NET code:**

1. **Always include** `Option Explicit On` and `Option Strict On` at file top
2. **Use explicit types** for all declarations
3. **Prefer method syntax LINQ** over query syntax (easier for agent parsing)
4. **Always use Using** for IDisposable objects
5. **Use Async/Await** for any I/O operations
6. **Include XML documentation** for public APIs
7. **Use meaningful names** - prioritize readability over brevity
8. **Handle exceptions explicitly** - no empty catches
9. **Follow naming conventions** exactly - PascalCase for public, _camelCase for private fields
10. **One responsibility per method** - extract when logic grows
11. **Prefer composition over inheritance** - use interfaces
12. **Immutability when possible** - ReadOnly fields, ReadOnly properties
13. **Validate parameters** at method entry
14. **Use CancellationToken** for long-running async operations
15. **Log errors with context** - include relevant data in log messages

---

**END OF SKILL REFERENCE**

*This document is optimized for AI coding agents generating modern, maintainable VB.NET code targeting .NET Framework 4.8+ and .NET 6/7/8+*

Related Skills

AI Coding Toolkit — Master Every AI Coding Assistant

3891
from openclaw/skills

> The complete methodology for 10X productivity with AI-assisted development. Covers Cursor, Windsurf, Cline, Aider, Claude Code, GitHub Copilot, and more — tool-agnostic principles that work everywhere.

icd10-cpt-coding-assistant

3891
from openclaw/skills

Automatically recommend ICD-10 diagnosis codes and CPT procedure codes from clinical notes. Trigger when: user provides clinical notes, patient encounter summaries, discharge summaries, or asks for medical coding assistance. Use for healthcare providers, medical coders, and billing professionals who need accurate code recommendations.

Coding Agent Skill

3891
from openclaw/skills

## Description

swarm-coding-skill

3891
from openclaw/skills

Autonomous multi-agent code generation. Planner creates manifest, specialized roles execute tasks. Generates complete projects with tests, Docker, CI, and decision logs.

vibe-coding-checker

3891
from openclaw/skills

描述一个功能或项目,AI 快速评估用 Cursor/Windsurf/Bolt 等 AI 编程工具能否独立实现, 给出可行性判断、推荐工具、拆解路径和风险提示。

Coding

3891
from openclaw/skills

Coding style memory that adapts to your preferences, conventions, and patterns for consistent coding.

figure-reference-checker

3891
from openclaw/skills

Check figure references in manuscripts

Vibe Coding Mastery

3880
from openclaw/skills

The complete operating system for building software with AI. From first prompt to production deployment — prompting frameworks, architecture patterns, testing strategies, debugging playbooks, and production graduation checklists. Works with Claude Code, Cursor, Windsurf, Copilot, and any AI coding tool.

---

3891
from openclaw/skills

name: article-factory-wechat

Content & Documentation

humanizer

3891
from openclaw/skills

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.

Content & Documentation

find-skills

3891
from openclaw/skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

General Utilities

tavily-search

3891
from openclaw/skills

Use Tavily API for real-time web search and content extraction. Use when: user needs real-time web search results, research, or current information from the web. Requires Tavily API key.

Data & Research