# Send FOSMVVM Fields Generator to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "fosmvvm-fields-generator",
    "name": "FOSMVVM Fields Generator",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/foscomputerservices/fosmvvm-fields-generator",
    "canonicalUrl": "https://clawhub.ai/foscomputerservices/fosmvvm-fields-generator",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/fosmvvm-fields-generator",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=fosmvvm-fields-generator",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "reference.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "fosmvvm-fields-generator",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T01:56:41.070Z",
      "expiresAt": "2026-05-07T01:56:41.070Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=fosmvvm-fields-generator",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=fosmvvm-fields-generator",
        "contentDisposition": "attachment; filename=\"fosmvvm-fields-generator-2.0.6.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "fosmvvm-fields-generator"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/fosmvvm-fields-generator"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/fosmvvm-fields-generator",
    "downloadUrl": "https://openagent3.xyz/downloads/fosmvvm-fields-generator",
    "agentUrl": "https://openagent3.xyz/skills/fosmvvm-fields-generator/agent",
    "manifestUrl": "https://openagent3.xyz/skills/fosmvvm-fields-generator/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/fosmvvm-fields-generator/agent.md"
  }
}
```
## Documentation

### FOSMVVM Fields Generator

Generate Form Specifications following FOSMVVM patterns.

### Conceptual Foundation

For full architecture context, see FOSMVVMArchitecture.md | OpenClaw reference

A Form Specification (implemented as a {Name}Fields protocol) is the single source of truth for user input. It answers:

What data can the user provide? (properties)
How should it be presented? (FormField with type, keyboard, autofill semantics)
What constraints apply? (validation rules)
What messages should be shown? (localized titles, placeholders, errors)

### Why This Matters

The Form Specification is defined once, used everywhere:

// Same protocol adopted by different consumers:
struct CreateIdeaRequestBody: ServerRequestBody, IdeaFields { ... }  // HTTP transmission
@ViewModel struct IdeaFormViewModel: IdeaFields { ... }              // Form rendering
final class Idea: Model, IdeaFields { ... }                          // Persistence validation

This ensures:

Consistent validation - Same rules on client and server
Shared localization - One YAML file, used everywhere
Single source of truth - Change once, applies everywhere

### Connection to FOSMVVM

Form Specifications integrate with:

Localization System - FormField titles/placeholders and validation messages use LocalizableString
Validation System - Implements ValidatableModel protocol
Request System - RequestBody types adopt Fields for validated transmission
ViewModel System - ViewModels adopt Fields for form rendering

### When to Use This Skill

Defining a new form (create, edit, filter, search)
Adding validation to a request body
Any type that needs to conform to ValidatableModel
When fosmvvm-fluent-datamodel-generator needs form fields for a DataModel

### What This Skill Generates

A complete Form Specification consists of 3 files:

FilePurpose{Name}Fields.swiftProtocol + FormField definitions + validation methods{Name}FieldsMessages.swift@FieldValidationModel struct with @LocalizedString properties{Name}FieldsMessages.ymlYAML localization (titles, placeholders, error messages)

### Project Structure Configuration

Replace placeholders with your project's actual paths:

PlaceholderDescriptionExample{ViewModelsTarget}Shared ViewModels SPM targetViewModels, SharedViewModels{ResourcesPath}Localization resources pathSources/Resources

Expected Structure:

Sources/
  {ViewModelsTarget}/
    FieldModels/
      {Name}Fields.swift
      {Name}FieldsMessages.swift
  {ResourcesPath}/
    FieldModels/
      {Name}FieldsMessages.yml

### How to Use This Skill

Invocation:
/fosmvvm-fields-generator

Prerequisites:

Form purpose understood from conversation context
Field requirements discussed (names, types, constraints)
Entity relationship identified (what is this form creating/editing)

Workflow integration:
This skill is used when defining form validation and user input contracts. The skill references conversation context automatically—no file paths or Q&A needed. Often precedes fosmvvm-fluent-datamodel-generator for form-backed models.

### Pattern Implementation

This skill references conversation context to determine Fields protocol structure:

### Form Analysis

From conversation context, the skill identifies:

Form purpose (create, edit, filter, login, settings)
Entity relation (User, Idea, Document - what's being created/edited)
Protocol naming (CreateIdeaFields, UpdateProfile, LoginCredentials)

### Field Design

For each field from requirements:

Property specification (name, type, optional vs required)
Presentation type (FormFieldType: text, textArea, select, checkbox)
Input semantics (FormInputType: email, password, tel, date)
Constraints (required, length range, value range, date range)
Localization (title, placeholder, validation error messages)

### File Generation Order

Fields protocol with FormField definitions and validation
FieldsMessages struct with @LocalizedString properties
FieldsMessages YAML with localized strings

### Context Sources

Skill references information from:

Prior conversation: Form requirements, field specifications discussed
Specification files: If Claude has read form specs into context
Existing patterns: From codebase analysis of similar Fields protocols

### Protocol Structure

public protocol {Name}Fields: ValidatableModel, Codable, Sendable {
    var fieldName: FieldType { get set }
    var {name}ValidationMessages: {Name}FieldsMessages { get }
}

### FormField Definition

static var contentField: FormField<String?> { .init(
    fieldId: .init(id: "content"),
    title: .localized(for: {Name}FieldsMessages.self, propertyName: "content", messageKey: "title"),
    placeholder: .localized(for: {Name}FieldsMessages.self, propertyName: "content", messageKey: "placeholder"),
    type: .textArea(inputType: .text),
    options: [
        .required(value: true)
    ] + FormInputOption.rangeLength(contentRange)
) }

### FormField Types Reference

FormFieldTypeUse Case.text(inputType:)Single-line input.textArea(inputType:)Multi-line input.checkboxBoolean toggle.selectDropdown selection.colorPickerColor selection

### FormInputType Reference (common ones)

FormInputTypeKeyboard/Autofill.textDefault keyboard.emailAddressEmail keyboard, email autofill.passwordSecure entry.telPhone keyboard.urlURL keyboard.date, .datetimeLocalDate picker.givenName, .familyNameName autofill

### Validation Method Pattern

internal func validateContent(_ fields: [FormFieldBase]?) -> [ValidationResult]? {
    guard fields == nil || (fields?.contains(Self.contentField) == true) else {
        return nil
    }

    var result = [ValidationResult]()

    if content.isEmpty {
        result.append(.init(
            status: .error,
            field: Self.contentField,
            message: {name}ValidationMessages.contentRequiredMessage
        ))
    } else if !Self.contentRange.contains(NSString(string: content).length) {
        result.append(.init(
            status: .error,
            field: Self.contentField,
            message: {name}ValidationMessages.contentOutOfRangeMessage
        ))
    }

    return result.isEmpty ? nil : result
}

### Messages Struct Pattern

@FieldValidationModel public struct {Name}FieldsMessages {
    @LocalizedString("content", messageGroup: "validationMessages", messageKey: "required")
    public var contentRequiredMessage

    @LocalizedString("content", messageGroup: "validationMessages", messageKey: "outOfRange")
    public var contentOutOfRangeMessage
}

### YAML Structure

en:
  {Name}FieldsMessages:
    content:
      title: "Content"
      placeholder: "Enter your content..."
      validationMessages:
        required: "Content is required"
        outOfRange: "Content must be between 1 and 10,000 characters"

### Naming Conventions

ConceptConventionExampleProtocol{Name}FieldsIdeaFields, CreateIdeaFieldsMessages struct{Name}FieldsMessagesIdeaFieldsMessagesMessages property{name}ValidationMessagesideaValidationMessagesField definition{fieldName}FieldcontentFieldRange constant{fieldName}RangecontentRangeValidate methodvalidate{FieldName}validateContentRequired message{fieldName}RequiredMessagecontentRequiredMessageOutOfRange message{fieldName}OutOfRangeMessagecontentOutOfRangeMessage

### See Also

FOSMVVMArchitecture.md - Full FOSMVVM architecture reference
fosmvvm-viewmodel-generator - For ViewModels that adopt Fields
fosmvvm-fluent-datamodel-generator - For Fluent DataModels that implement Fields
reference.md - Complete file templates

### Version History

VersionDateChanges1.02024-12-24Initial skill2.02024-12-26Rewritten with conceptual foundation; generalized from Kairos-specific2.12026-01-24Update to context-aware approach (remove file-parsing/Q&A). Skill references conversation context instead of asking questions or accepting file paths.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: foscomputerservices
- Version: 2.0.6
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-30T01:56:41.070Z
- Expires at: 2026-05-07T01:56:41.070Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/fosmvvm-fields-generator)
- [Send to Agent page](https://openagent3.xyz/skills/fosmvvm-fields-generator/agent)
- [JSON manifest](https://openagent3.xyz/skills/fosmvvm-fields-generator/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/fosmvvm-fields-generator/agent.md)
- [Download page](https://openagent3.xyz/downloads/fosmvvm-fields-generator)