Build typed reactive forms with strict FormGroup typing, custom validators, and nonNullable controls in Angular. Use when implementing typed reactive forms, custom validators, or form control patterns.
55
63%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/angular/angular-forms/SKILL.mdQuality
Discovery
100%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
This is a strong skill description that clearly identifies its niche in Angular typed reactive forms. It provides specific concrete actions, includes natural developer-facing trigger terms, and has an explicit 'Use when' clause. The description is concise, uses third person voice, and would be easily distinguishable from other skills.
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | Lists multiple specific concrete actions: 'Build typed reactive forms', 'strict FormGroup typing', 'custom validators', and 'nonNullable controls'. These are concrete, well-defined Angular concepts. | 3 / 3 |
Completeness | Clearly answers both 'what' (build typed reactive forms with strict FormGroup typing, custom validators, nonNullable controls) and 'when' (explicit 'Use when implementing typed reactive forms, custom validators, or form control patterns'). | 3 / 3 |
Trigger Term Quality | Includes strong natural keywords that Angular developers would use: 'typed reactive forms', 'FormGroup', 'custom validators', 'nonNullable controls', 'form control patterns'. These are terms developers naturally use when seeking help with Angular forms. | 3 / 3 |
Distinctiveness Conflict Risk | Highly specific to Angular's typed reactive forms ecosystem with distinct triggers like 'FormGroup typing', 'nonNullable controls', and 'reactive forms'. Unlikely to conflict with general form-building or other framework skills. | 3 / 3 |
Total | 12 / 12 Passed |
Implementation
27%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This skill provides a reasonable high-level outline of Angular typed reactive forms best practices but critically lacks any executable code examples in the body itself. All concrete guidance is deferred to a reference file that is not included in the bundle, making the skill largely non-actionable. The anti-patterns section is redundant with the main sections, and the content would benefit significantly from inline code examples and the actual reference file.
Suggestions
Add at least one complete, executable code example of a typed FormGroup<T> with explicit control types directly in the SKILL.md body, rather than deferring all examples to the reference file.
Include the referenced 'references/typed-forms.md' file in the bundle, or inline the most critical examples (typed FormGroup, custom validator function, nonNullable group) so the skill is self-contained.
Remove the redundant anti-patterns section or merge it into the numbered sections as brief inline warnings to improve conciseness.
Add a concrete workflow example showing the full sequence: define form interface → create typed FormGroup → add custom validator → sync with store, with a brief validation step (e.g., 'verify form.value type matches your interface').
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | Mostly efficient but has some unnecessary filler like 'Priority: P2 (MEDIUM)' which adds no value for Claude, and phrases like 'This ensures form values always strings — avoids null in form values' are slightly redundant. The anti-patterns section largely restates what was already said in the numbered sections. | 2 / 3 |
Actionability | No executable code examples are provided anywhere in the body. All concrete guidance is deferred to a reference file (references/typed-forms.md) that is not included in the bundle. The instructions are descriptive ('use fb.nonNullable.group(...)') but never show a complete, copy-paste-ready example of a typed FormGroup, validator, or nonNullable control. | 1 / 3 |
Workflow Clarity | The numbered sections provide a reasonable sequence (define typed forms → extract validators → ensure nonNullable), but there are no validation checkpoints, no feedback loops, and no concrete steps for how to wire these together in practice. For a skill that could involve multi-step form setup, the lack of explicit verification steps is a gap. | 2 / 3 |
Progressive Disclosure | The skill references 'references/typed-forms.md' multiple times, but no bundle files are provided, meaning all the actionable content is deferred to a file that doesn't exist in the evaluated bundle. This creates a broken reference chain where the SKILL.md body is essentially an empty shell pointing to missing content. | 1 / 3 |
Total | 6 / 12 Passed |
Validation
81%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 9 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
metadata_version | 'metadata.version' is missing | Warning |
metadata_field | 'metadata' should map string keys to string values | Warning |
Total | 9 / 11 Passed | |
eb6e554
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.