agentsclimarketplace

Vb winforms

Skill oreguchi/vb-winforms-skills/skills/vb-winforms

Claude Code skills for building and modernizing VB.NET Windows Forms applications on modern .NET (8 / 9)

Install
npx -y skills add oreguchi/vb-winforms-skills --skill vb-winforms

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

VB.NET で Windows Forms アプリケーションを構築、保守、またはモダナイズする。デザイナー駆動 UI、イベント処理、データバインディング、MVP 分離、モダン .NET への移行を実践的に扱う。WinForms プロジェクトの開発または .NET Framework からの移行時に使用する。

SKILL.md

6.4 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it

Windows Forms

Trigger On

  • Windows Forms UI、イベント駆動ワークフロー、またはクラシック LOB アプリケーションの開発
  • WinForms を .NET Framework からモダン .NET へ移行する
  • 肥大化したフォームコードやデザイナー結合の整理
  • データバインディング、入力検証、またはコントロールカスタマイズの実装

Workflow

  1. デザイナー境界を尊重する.Designer.vb を直接編集しない。再生成時に変更が失われる。
  2. ビジネスロジックをフォームから分離する — MVP(Model-View-Presenter)パターンを使用する。フォームは UI を統括し、プレゼンターがロジックを保持し、サービスがデータアクセスを担う。
    ' View インターフェース — フォームがこれを実装する
    Public Interface ICustomerView
        Property CustomerName As String
        Event SaveRequested As EventHandler
        Sub ShowError(message As String)
    End Interface
    
    ' Presenter — UI なしでテスト可能
    Public Class CustomerPresenter
        Private ReadOnly _view As ICustomerView
        Private ReadOnly _service As ICustomerService
    
        Public Sub New(view As ICustomerView, service As ICustomerService)
            _view = view
            _service = service
            AddHandler _view.SaveRequested, Async Sub(s, e)
                Try
                    Await _service.SaveAsync(_view.CustomerName)
                Catch ex As Exception
                    _view.ShowError(ex.Message)
                End Try
            End Sub
        End Sub
    End Class
    
  3. Program.vb から DI を使用する(.NET 6+、コピペで実行可能な完全版):
    Imports Microsoft.Extensions.DependencyInjection
    Imports System.Windows.Forms
    
    Module Program
        <STAThread>
        Sub Main()
            ' .NET 6+ の WinForms ソースジェネレータが生成する初期化ヘルパー
            ' (<OutputType>WinExe</OutputType> + <UseWindowsForms>true</UseWindowsForms> の
            '  プロジェクトで自動生成される。Library ビルドでは使用不可)
            ApplicationConfiguration.Initialize()
    
            ' 旧来の個別呼び出し形式(.NET 5 以前や手動制御したい場合):
            ' Application.EnableVisualStyles()
            ' Application.SetCompatibleTextRenderingDefault(False)
            ' Application.SetHighDpiMode(HighDpiMode.SystemAware)
    
            Dim services As New ServiceCollection()
            services.AddSingleton(Of ICustomerService, CustomerService)()
            services.AddTransient(Of MainForm)()
    
            Using sp = services.BuildServiceProvider()
                Application.Run(sp.GetRequiredService(Of MainForm)())
            End Using
        End Sub
    End Module
    
    必須事項: <STAThread> 属性(WinForms は STA 必須)、Module Program + Sub Main(VB.NET は top-level statements を持たない)、ApplicationConfiguration.Initialize() または従来 3 API 呼び出し(ビジュアルスタイル + DPI 対応)。これらを省略すると正しく起動しない。
  4. BindingSourceINotifyPropertyChanged を使ったデータバインディングを利用し、手動によるコントロール設定を避ける。完全なバインディングパターンは references/patterns.md を参照。
  5. I/O 操作には async/await を使用する — 読み込み中はコントロールを無効化し、進捗報告には Progress(Of T) を使用する。UI スレッドをブロックしない。
  6. ErrorProviderValidating イベントで入力検証を行う。保存操作の前に ValidateChildren() を呼び出す。
  7. 段階的にモダナイズする — ビッグバン的な書き換えより、良い構造への漸進的改善を優先する。利用可能であれば .NET 8+ の機能(ボタンコマンド、ストックアイコン)を活用する。
flowchart LR
  A["Form event"] --> B["Presenter handles logic"]
  B --> C["Service layer / data access"]
  C --> D["Update view via interface"]
  D --> E["Validate and display results"]

Key Decisions

決定事項ガイダンス
MVP vs MVVMWinForms では MVP を推奨 — イベント駆動モデルとの親和性が高い
BindingSource vs 手動リスト/詳細バインディングでは常に BindingSource を優先する
同期 vs 非同期 I/O常に非同期 — Async Sub はイベントハンドラにのみ使用する
カスタムコントロールフォームが約 300 行を超えたら再利用可能な UserControl に抽出する
.NET Framework → .NET公式移行ガイドを使用し、まずデザイナーの互換性を検証する

Deliver

  • 明確な UI/ロジック分離による堅牢なフォームコード
  • テスト可能なプレゼンターを持つ MVP パターン
  • WinForms 重視のアプリに対する実践的なモダナイズガイダンス
  • 手動配線を削減するデータバインディングと入力検証のパターン

Validate

  • デザイナーファイルが安定しており、手動編集されていない
  • フォームがアプリケーションサービス層として機能していない
  • 非同期処理が UI スレッドをブロックしていない
  • 入力検証が ErrorProvider で一貫して実装されている
  • Windows 専用のランタイム動作がターゲット環境でテストされている

References

  • references/patterns.md - WinForms アーキテクチャパターン(MVP、MVVM、Passive View)、データバインディング、入力検証、フォーム間通信、スレッド処理、DI セットアップ、および .NET 8+ の機能
  • references/migration.md - .NET Framework からモダン .NET へのステップバイステップの移行手順、よくある問題、デプロイオプション、段階的移行戦略

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.