the-vm-standard

Enforce standardized View Model architecture in TypeScript MVVM projects.

Updated Aug 23, 2026
One-click install
npx skills add https://github.com/front-depiction/claude-setup --skill the-vm-standard
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: the-vm-standard
Source: https://github.com/front-depiction/claude-setup/tree/main/skills/the-vm-standard
Command: npx skills add https://github.com/front-depiction/claude-setup --skill the-vm-standard

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

The VM Standard defines inviolable covenants governing View Model architecture to ensure consistency, maintainability, and proper separation of concerns across all UI-related code. It prevents divergence in VM definitions and enforces a uniform pattern for live/test layers, atom usage, and tagging.

Core Features & Use Cases

  • Enforces single-file View Model definitions following the {ComponentName}.vm.ts naming convention.
  • Provides a canonical Layer structure with live and test variants and namespace import patterns.
  • Prohibits business logic in View Models; delegates to services and exposes reactive UI bindings.
  • Useful for teams building robust UI architectures, enabling reliable testing and production readiness.

Quick Start

Create a new VM following the canonical template and export it with live/test variants as shown in the template. Ensure the VM resides in a single file named {ComponentName}.vm.ts and that the default export uses VMRuntime.key with live and test variants.

Frequently Asked Questions about the-vm-standard

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I enforce a standardized View Model architecture in TypeScript?

To enforce a standardized View Model architecture in TypeScript, apply a single-file VM definition convention using the {ComponentName}.vm.ts naming pattern. This ensures file naming, tagging, and layer exports remain consistent across your codebase.

What is the best way to separate business logic from View Models?

The best way to separate business logic from View Models is to prohibit logic inside the VM and delegate it to services. View Models should solely expose reactive UI bindings, ensuring proper separation of concerns.

How do I set up live and test variants for View Models?

To set up live and test variants for View Models, use a canonical Layer structure with namespace import patterns. The default export must use VMRuntime.key to export both live and test variants for reliable testing and production readiness.

Does the View Model standard require single-file VM definitions?

Yes, the View Model standard requires single-file VM definitions to prevent divergence in VM definitions. Each View Model must reside in a single file named {ComponentName}.vm.ts, enforcing a uniform pattern for atom usage and tagging.

Why do View Models need namespace imports and atom naming conventions?

View Models need namespace imports and atom naming conventions to maintain consistency and proper separation of concerns across UI-related code. This uniform pattern enables reliable testing and prevents architectural divergence across teams.