К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

reference-signal-forms — скилл Claude Code: установка

Разбирает архитектуру signal-based forms в Angular и помогает безопаснее работать с packages/forms/signals, где форма строится вокруг сигнала.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add angular/angular --skill reference-signal-forms -a claude-code
Открыть на GitHub

Что делает reference-signal-forms

Скилл объясняет модель signal-based forms в Angular. Значение хранится в WritableSignal<T>, а форма выступает проекцией с состоянием валидности, изменения и взаимодействия. Вызов form(signal) создаёт прокси FieldTree, через который вложенные поля получают свои FieldNode.

Материал связывает Schema с правилами валидации и состояниями вроде disabled и hidden, а [formField] — с DOM и пользовательскими контролами. Внутри разобраны FieldNode, состояния валидации, узла, метаданных и отправки, включая асинхронные и серверные ошибки. Если вы меняете код в packages/forms/signals, скилл нужно подключить заранее: это его основная область применения.

Какие задачи решает

  • разобрать архитектуру signal-based forms в Angular
  • найти источник значения конкретного поля
  • понять связь FieldTree и FieldNode
  • настроить правила через Schema и apply
  • проверить работу [formField] с DOM-контролом

Примеры запросов агенту

  • Разбери архитектуру кода в `packages/forms/signals` перед изменением.
  • Объясни, как `WritableSignal<T>`, `FieldTree` и `Schema` связаны в этом коде.
  • Проверь, как `[formField]` синхронизирует значение между DOM и сигналом.

Как установить reference-signal-forms

1Через Skills CLI (Vercel)

npx skills add angular/angular --skill reference-signal-forms -a claude-code

2Вручную: положить файлы

~/.claude/skills/reference-signal-forms/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/reference-signal-forms/

Из того же набора4

Весь набор →

Похожие

ima-sdk-client-side официальный Google LLC Скилл помогает подключать Google IMA SDK для клиентской вставки видео- и аудиорекламы по VAST или VMAP. Подойдёт для сайтов, приложений и ТВ-платформ. Claude Code Gemini CLI CX Codex 4 500установок e2e-tests-studio mastra-ai Скилл автоматически генерирует Playwright E2E тесты при изменении компонентов playground. Тестирует не состояние интерфейса, а реальное поведение: сохранение данных, потоки данных, эффекты действий. Claude Code CX Codex Cursor +1 2 500установок ima-dai-sdk официальный Google LLC Скилл помогает подключить Google IMA DAI SDK для загрузки HLS- и DASH-потоков. Подойдёт для прямых эфиров и видео по запросу в приложениях и на сайтах. Claude Code Gemini CLI CX Codex 4 300установок visual-design-foundations Seth Hobson Скилл помогает задать типографику, цвета и интервалы для проекта. Подойдёт, когда вы создаёте дизайн-токены или приводите интерфейс к единому стилю. Claude Code CX Codex Cursor 13 566установок baoyu-design JimLiu Скилл генерирует макеты интерфейсов, интерактивные прототипы и презентации в виде автономного HTML. Подходит для вёрстки экранов, дизайн-систем и схем. Claude Code CX Codex Cursor +1 6 300установок frontend-design официальный anthropics Скилл задаёт осмысленное визуальное направление для новых интерфейсов и редизайна. Подойдёт, когда стандартный шаблонный UI не устраивает. Claude Code Claude.ai 1 025 790установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. Claude Code CX Codex Cursor +1 673 100установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. Claude Code 986 201установок

Вопросы о reference-signal-forms

Как установить `reference-signal-forms` в Claude Code?

Выполните команды по порядку: npx skills add angular/angular --skill reference-signal-forms -a claude-code, затем повторите npx skills add angular/angular --skill reference-signal-forms -a claude-code. Файл скилла находится по пути ~/.claude/skills/reference-signal-forms/SKILL.md.

Что делает `reference-signal-forms`?

Скилл объясняет архитектуру Angular signal-based forms: модель с WritableSignal<T>, прокси FieldTree, узлы полей, схемы правил и директиву [formField]. Он также описывает синхронную, асинхронную и серверную валидацию.

Когда нужен `reference-signal-forms`?

Подключайте его перед работой с кодом в packages/forms/signals. Этот каталог использует модель, которая отличается от Reactive Forms и Template-driven forms.

Исходный текст

SKILL.md · MIT
---
name: reference-signal-forms
description: Explains the mental model and architecture of the code under `packages/forms/signals`. You MUST use this skill any time you plan to work with code in `packages/forms/signals`
---

# Signal Forms Architecture

The `packages/forms/signals` directory contains the signal-based forms API for Angular.
This system differs significantly from the existing Reactive and Template-driven forms.

## Mental Model

1.  **Model-Driven**: The system is built around a `WritableSignal<T>` which serves as the **single source of truth**.
    Unlike Reactive Forms where the `FormControl` holds the value, here the `Signal` holds the value.
    The form is merely a _view_ or _projection_ of that signal, adding form-specific state (validity, dirty, touched).

2.  **Proxy-Based Traversal**: The form API (`form(signal)`) returns a `FieldTree`. This object is a **Proxy**.
    It allows accessing nested fields (e.g., `myForm.user.name`) without manually creating control groups.
    Accessing a property on the proxy lazily resolves or creates the corresponding `FieldNode`.

3.  **Schema-Based Logic**: Validation, disabled state, and other metadata are defined separately via **Schemas**.
    Schemas are applied to the form structure using functions like `apply`, `applyEach` (for arrays), and `applyWhen`.
    This separates the _structure_ of the data from the _rules_ governing it.

4.  **Directives as Glue**: The `[formField]` directive binds a DOM element (native input or custom control) to a `FieldNode`.
    It handles:
    - Syncing the value between the DOM and the Signal.
    - Reflecting state (valid, touched, etc.) to the UI.
    - Handling user interaction events (blur, input).

## Key Components

### 1. `FieldNode` (`src/field/node.ts`)

The central internal class representing a single field in the form graph. It aggregates several state managers:

- `structure`: Manages parent/child relationships and signal slicing.
- `validationState`: Computes `valid`, `invalid`, `errors` signals.
- `nodeState`: Tracks `touched`, `dirty`, and derived logical state.
- `metadataState`: Stores metadata like `min`, `max`, `required`.
- `submitState`: Tracks submission status and server errors.

### 2. `FieldValidationState` (`src/field/validation.ts`)

Implements `ValidationState` and manages the complexity of validation:

- **Synchronous Errors**: Derived from schema rules.
- **Asynchronous Errors**: Handled via signals, including 'pending' states.
- **Tree Errors**: Errors that bubble up or are targeted at specific fields.
- **Submission Errors**: Server-side errors injected imperatively via `submit()`.

### 3. `FormField` Directive (`src/directive/form_field.ts`)

The bridge between the `FieldNode` and the DOM.

- Selector: `[formField]`
- It supports:
  - **Native Elements**: `<input>`, `<select>`, `<textarea>`.
  - **Custom Controls**: Components implementing `FormValueControl` or `FormCheckboxControl`.
  - **Legacy Interop**: Components implementing `ControlValueAccessor` (via `InteropNgControl`).

### 4. `Schema` (`src/api/structure.ts` & `src/api/rules`)

Defines the behavior.

- Created via `schema(fn)`.
- Applied via `apply(path, schema)`.
- Rules include validators (`required`, `pattern`, `min`, `max`) and state modifiers (`disabled`, `hidden`).

## Data Flow

1.  **Read**: `form.field().value()` reads directly from the underlying signal (projected to the specific path).
2.  **Write**: Writing to the form (e.g., via UI) updates the underlying signal.
3.  **Validation**: A computed effect observes the value signal and runs validators defined in the schema.

## Usage Example (Conceptual)

```typescript
// 1. Define Model
const user = signal({name: '', age: 0});

// 2. Define Schema
const userRules = schema((u) => {
  required(u.name);
  min(u.age, 18);
});

// 3. Create Form
const userForm = form(user, userRules); // OR apply(userForm, userRules)

// 4. Bind in Template
// <input [formField]="userForm.name">
```

## Important Files

- `packages/forms/signals/src/api/structure.ts`: Public API entry points (`form`, `apply`).
- `packages/forms/signals/src/api/control.ts`: Interfaces for custom controls (`FormUiControl`).
- `packages/forms/signals/src/field/node.ts`: The `FieldNode` implementation.
- `packages/forms/signals/src/directive/form_field.ts`: The `[formField]` directive.

## Supplemental Information

- [Compiler & Core Integration](references/integration.md): Details how `[formField]` hooks into type-checking and the runtime.

© angular · MIT · angular/angular

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой