Agent skill

Tsh Implementing Forms

by TheSoftwareHouse in TheSoftwareHouse/copilot-collections

Form architecture, schema-based validation, field composition, error handling, multi-step form flows, and accessible form patterns.

MITAuto-check passedFrontend & Design

Install Tsh Implementing Forms

skills CLI
$ npx skills add TheSoftwareHouse/copilot-collections --skill tsh-implementing-forms -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install TheSoftwareHouse/copilot-collections tsh-implementing-forms --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/TheSoftwareHouse/copilot-collections.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/tsh-implementing-forms .claude/skills/tsh-implementing-forms && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
tsh-implementing-forms
GitHub stars
284
Token cost
~2.6k tokens
SKILL.md length
1,091 words
Files
1
Skills in repo
31
Repo updated
First seen
Licence
MIT

At a glance

Form architecture, schema-based validation, field composition, error handling, multi-step form flows, and accessible form patterns.

  • Works in 6 steps: Validate all fields against the schema. → If invalid — display errors and focus… → If valid — transform data if needed… → …
  • Implementing validation
  • SKILL.md covers Form Implementation Process, Validation Timing, Error Display Patterns and Form Checklist, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Tsh Implementing Forms is an agent skill from TheSoftwareHouse/copilot-collections. Form architecture, schema-based validation, field composition, error handling, multi-step form flows, and accessible form patterns. Use when building forms, implementing validation, creating multi-step wizards, or integrating form fields with a component library.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering Design systems and Accessibility. The repository describes itself as: Opinionated AI-enabled workflows for product engineering. The licence is MIT.

When your agent uses it

  • Implementing validation
  • Creating multi-step wizards
  • Integrating form fields with a component library

Example prompts

  • “/tsh-implementing-forms”

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Validate all fields against the schema.
  2. If invalid — display errors and focus the first invalid field.
  3. If valid — transform data if needed (trim strings, format dates), then call the submit handler.
  4. During async submission: disable the submit button and show a loading indicator.
  5. On success — navigate, show confirmation, or reset form as appropriate.
  6. On server error — map API error responses to specific form fields where possible. Display unmapped errors as a form-level message.

What it can do on your machine

Read from SKILL.md and the folder at commit 2fbe51e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Tsh Implementing Forms loads about 2.6k tokens when it runs. Until then it costs about 72 tokens; SKILL.md has 1,091 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~72
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from TheSoftwareHouse/copilot-collections at commit 2fbe51e, republished under its MIT licence (© TheSoftwareHouse). 1,091 words, ~2,601 tokens.

Download SKILL.mdSave it as .claude/skills/tsh-implementing-forms/SKILL.md (or your agent's skills folder).
name
tsh-implementing-forms
description
Form architecture, schema-based validation, field composition, error handling, multi-step form flows, and accessible form patterns. Use when building forms, implementing validation, creating multi-step wizards, or integrating form fields with a component library.
user-invocable
false

Implementing Forms

Provides patterns and workflows for building robust, accessible forms with schema-based validation, composable field components, and multi-step form flows.

<principles>
<schema-first-validation>
Define validation rules as a separate schema, co-located with but decoupled from UI code. The schema is the single source of truth for what constitutes valid data. Infer TypeScript types from schemas to eliminate drift between validation rules and form types. Never duplicate type definitions manually — derive them from the schema.
</schema-first-validation>
<progressive-disclosure-of-errors>
Show validation errors at the right moment: on field blur or form submission, not on every keystroke. Help users fix errors rather than frustrate them with premature feedback. After the first validation pass, switch to on-change validation so users see errors clear as they correct them.
</progressive-disclosure-of-errors>
<accessible-by-default>
Every form field must have a visible label. Error messages must be announced to screen readers via `role="alert"` or `aria-live` regions. The form must be fully navigable by keyboard alone — Tab through fields, Enter to submit, Escape to cancel where applicable. Associate error messages with their fields using `aria-describedby`.
</accessible-by-default>
</principles>

Form Implementation Process

Use the checklist below and track progress:

Progress:
- [ ] Step 1: Define the data model
- [ ] Step 2: Build field components
- [ ] Step 3: Compose the form
- [ ] Step 4: Handle multi-step flows (if applicable)
- [ ] Step 5: Verify accessibility

Step 1: Define the data model

  • Identify all fields: names, types, required vs. optional, default values.
  • Define a validation schema in a co-located file (*.schema.ts or validation/ directory). The schema declares every constraint: required fields, min/max lengths, patterns, custom rules, cross-field dependencies.
  • Infer the form's TypeScript type directly from the schema — do not write a separate interface that duplicates the schema's structure.
  • Document any async validation rules (e.g., "check if username is available") — these run on blur or submit, never on every keystroke.

Step 2: Build field components

Create composable field wrapper components that connect the form library's state to the component library's inputs. Each field wrapper:

  • Receives the field name (and optionally the form context) as props.
  • Renders a visible <label>, the input element, and an error message container.
  • Reads touched/dirty/error state from the form library and reflects it in the UI.
  • Sets accessibility attributes:
    • aria-invalid="true" when the field has an error.
    • aria-describedby pointing to the error message element's id.
    • aria-required="true" for required fields.
  • Supports all relevant input types: text, select, checkbox, radio, textarea, date, file upload.
  • For file inputs: hide the native <input type="file"> visually and use a styled trigger button with aria-label. Display selected file name(s), size, and a remove action. Validate file type and size in the schema — reject invalid files before upload begins.
  • Keeps the wrapper generic — the same field component works for different forms by accepting the field name as a parameter.

Step 3: Compose the form

Assemble field components into a form:

  • Wrap field components with the form library's provider/context so fields can access form state.
  • Add novalidate attribute to the <form> element when using custom validation — this disables browser-native validation bubbles that conflict with the form library's error display. The schema-based validation from Step 1 replaces the browser's built-in constraints.
  • Handle submission flow:
    1. Validate all fields against the schema.
    2. If invalid — display errors and focus the first invalid field.
    3. If valid — transform data if needed (trim strings, format dates), then call the submit handler.
    4. During async submission: disable the submit button and show a loading indicator.
    5. On success — navigate, show confirmation, or reset form as appropriate.
    6. On server error — map API error responses to specific form fields where possible. Display unmapped errors as a form-level message.
  • Prevent double submission by disabling the submit button while a submission is in flight.
  • Ensure the form is submittable via the Enter key (native <form> behavior — do not break it with preventDefault on the wrong element).

Step 4: Handle multi-step flows (if applicable)

When a form spans multiple steps or pages:

  • Split the form into discrete steps, each with its own validation schema. Only validate the fields visible in the current step.
  • Persist state across steps using form-level state (component state or a store) — not URL parameters. Users must not lose data when navigating between steps.
  • Validate the current step before allowing navigation to the next step. Show errors on the current step, do not allow skipping ahead past invalid steps.
  • Allow back-navigation without losing previously entered data.
  • Show a progress indicator (stepper, progress bar, or step labels) so users know where they are and how many steps remain.
  • On the final step, submit all accumulated data from all steps together.

Step 5: Verify accessibility

Use the tsh-ensuring-accessibility skill for a thorough audit. At minimum, verify:

  • Every <input>, <select>, and <textarea> has an associated <label> element (via for/id pairing or wrapping).
  • Error messages use role="alert" or are in an aria-live="polite" region so screen readers announce them.
  • Tab order follows the visual layout — no unexpected focus jumps.
  • The form can be submitted by pressing Enter in a text field.
  • Focus moves to the first invalid field after a failed submission attempt.
  • Required fields are indicated both visually (e.g., asterisk) and programmatically (aria-required).
Show full SKILL.md (275 more words)Show less

Validation Timing

Validation modeWhen to useBehavior
On submitSimple forms, few fieldsValidate all fields on submit, show all errors at once
On blurComplex forms, many required fieldsValidate each field when the user leaves it
On change (with debounce)Real-time feedback needed (password strength, username availability)Validate as user types, debounced to avoid excessive checks
MixedBest UX for most formsValidate on blur initially; after the first error, switch to on-change so errors clear immediately when corrected

Error Display Patterns

PatternDescription
Inline below fieldError message directly under the invalid field — most common, recommended default
Summary at topList of all errors at the top of the form — useful for long forms, aids screen readers
Inline + summaryBoth inline and summary — best accessibility (screen reader reads summary, sighted users see inline)
Toast/notificationOnly for server-side submission errors, never for field-level validation

Form Checklist

Form:
- [ ] Validation schema defined separately from UI
- [ ] TypeScript type inferred from schema (no manual duplication)
- [ ] Every field has a visible label
- [ ] Error messages shown inline below fields
- [ ] Errors announced to screen readers (role="alert" or aria-live)
- [ ] Submit button disabled during submission
- [ ] Server-side errors mapped to specific fields
- [ ] Tab order follows visual layout
- [ ] Form submittable via Enter key
- [ ] Loading state during async submission

Anti-Patterns

Anti-PatternInstead Do
Manual validation in event handlersUse a schema-based validation library
Duplicating types between schema and formInfer types from the schema
Showing errors on every keystrokeUse blur or mixed-mode validation
Unlabeled inputs (placeholder as label)Always use visible <label> elements
Generic "Form has errors" messageSpecific per-field error messages
Losing form data on back-navigationPersist state across steps
Ignoring server-side errorsMap API errors to specific form fields
Submit button without loading stateDisable button + show spinner during submission

Connected Skills

  • tsh-implementing-frontend — for component composition patterns and framework-specific references (form library integration, validation library choice)
  • tsh-ensuring-accessibility — for WCAG compliance in form fields, labels, and error announcements
  • tsh-writing-hooks — for custom form-related hooks/composables (useFormField, useMultiStepForm)
  • tsh-reviewing-frontend — for form-specific review criteria during code review

© TheSoftwareHouse, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/tsh-implementing-forms of TheSoftwareHouse/copilot-collections.

Open the folder on GitHubat commit 2fbe51e

Compare with similar skills

Tsh Implementing Forms next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Tsh Implementing Forms compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Tsh Implementing Forms this skillTheSoftwareHouse/copilot-collections284—~2.6kAutomated safety check: PassMIT
UI/UX Design System AdvisorGalaxy-Dawn/claude-scholar5.7k1 repos~1.1kAutomated safety check: PassMIT
Extract DesignManavarya09/design-extract4.2k—~786Automated safety check: NotesMIT
Color Auditrome-os/rome717—~2.7kAutomated safety check: PassMIT
Material Design 3 UI/UX Guideskydashnet/material-design-3-ui-skill130—~3kAutomated safety check: PassMIT
UI Component Spec Designerplugin87/ux-ui-agent-skills1.5k—~2.8kAutomated safety check: PassMIT

Similar skills

  • UI/UX Design System Advisor

    Galaxy-Dawn/claude-scholar

    Turns a vague UI request into a concrete design system with style, palette, typography and layout guidance from a search script, plus stack-specific implementation advice.

    5.7k GitHub starsUsed in 1 repo~1.1k tokens
    Frontend & DesignAuto-check passed
  • Extract Design

    Manavarya09/design-extract

    Extract the full design language from any website URL. An agent skill from Manavarya09/design-extract.

    4.2k GitHub stars~786 tokensUpdated 8 days ago
    Frontend & DesignAuto-check: notes
  • Color Audit

    rome-os/rome

    Audit a design system's color palette against measurable color-science disciplines — WCAG/APCA contrast of declared token pairs, perceptual (OKLCH) ramp uniformity, color-blindness safety of…

    717 GitHub stars~2.7k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Material Design 3 UI/UX Guide

    skydashnet/material-design-3-ui-skill

    Guides designing, reviewing or implementing interfaces that follow Google's Material Design 3 system: semantic tokens, component states, adaptive layout and accessibility.

    130 GitHub stars~3k tokensUpdated 7 days ago
    Frontend & DesignAuto-check passed
  • UI Component Spec Designer

    plugin87/ux-ui-agent-skills

    Writes a complete UI component spec with anatomy, variants, sizes, eight interaction states, design-token mapping and accessibility notes before or alongside code.

    1.5k GitHub stars~2.8k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Typeui Fundamentals

    bergside/typeui

    Universal UI/UX design principles covering visual hierarchy, interaction laws, typography foundations, and WCAG accessibility requirements.

    2k GitHub stars~861 tokensUpdated 3 mo ago
    Frontend & DesignAuto-check passed

More from TheSoftwareHouse/copilot-collections

All 31 skills in this repo
  • Tsh Creating Skills

    TheSoftwareHouse/copilot-collections

    Create new skills (SKILL.md) for GitHub Copilot. An agent skill from TheSoftwareHouse/copilot-collections.

    284 GitHub stars~4.1k tokensUpdated 2 days ago
    Auto-check passed
  • Tsh Implementing Frontend

    TheSoftwareHouse/copilot-collections

    Frontend component patterns, composition, design token integration, barrel file organization, error handling, and Figma-to-code workflow.

    284 GitHub stars~2.6k tokensUpdated 2 days ago
    Auto-check passed
  • Tsh Implementing Terraform Modules

    TheSoftwareHouse/copilot-collections

    Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices.

    284 GitHub stars~1.6k tokensUpdated 2 days ago
    Auto-check passed
  • Tsh Optimizing Frontend

    TheSoftwareHouse/copilot-collections

    Frontend rendering optimization, code splitting, memoization strategies, bundle size control, asset optimization, and memory management.

    284 GitHub stars~4.1k tokensUpdated 2 days ago
    Auto-check passed
  • Tsh Reviewing Frontend

    TheSoftwareHouse/copilot-collections

    Frontend-specific code review criteria, component anti-patterns, hooks quality, rendering correctness, accessibility and performance spot-checks, and module organization issues.

    284 GitHub stars~4.4k tokensUpdated 2 days ago
    Auto-check passed
  • Tsh Writing Hooks

    TheSoftwareHouse/copilot-collections

    Custom hook and composable patterns — naming, composition, stable return shapes, lifecycle cleanup, and testing strategies.

    284 GitHub stars~3k tokensUpdated 2 days ago
    Auto-check passed

Questions about Tsh Implementing Forms

What does Tsh Implementing Forms do?

Form architecture, schema-based validation, field composition, error handling, multi-step form flows, and accessible form patterns. Tsh Implementing Forms is an agent skill from TheSoftwareHouse/copilot-collections. Form architecture, schema-based validation, field composition, error handling, multi-step form flows, and accessible form patterns.

When should I use Tsh Implementing Forms?

Tsh Implementing Forms fits situations like: implementing validation; creating multi-step wizards; integrating form fields with a component library.

How do I install Tsh Implementing Forms in Claude Code?

Run `npx skills add TheSoftwareHouse/copilot-collections --skill tsh-implementing-forms -a claude-code`. Or copy the skill folder (.github/skills/tsh-implementing-forms in TheSoftwareHouse/copilot-collections) into .claude/skills/tsh-implementing-forms in your project. Claude Code loads it when a task matches its description.

How do I install Tsh Implementing Forms in Codex?

Run `npx skills add TheSoftwareHouse/copilot-collections --skill tsh-implementing-forms -a codex`. Or copy the skill folder (.github/skills/tsh-implementing-forms in TheSoftwareHouse/copilot-collections) into .agents/skills/tsh-implementing-forms in your project. Codex loads it when a task matches its description.

Can I use Tsh Implementing Forms in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add TheSoftwareHouse/copilot-collections --skill tsh-implementing-forms -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tsh-implementing-forms, .gemini/skills/tsh-implementing-forms, .github/skills/tsh-implementing-forms and .opencode/skills/tsh-implementing-forms in your project.

What does Tsh Implementing Forms need to run?

SKILL.md names no scripts, command-line tools or credentials: Tsh Implementing Forms is instructions for the agent only.

Does Tsh Implementing Forms access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Tsh Implementing Forms safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Tsh Implementing Forms use?

Tsh Implementing Forms is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Tsh Implementing Forms use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Tsh Implementing Forms?

Skills that share tags, products or a category with Tsh Implementing Forms: UI/UX Design System Advisor (Galaxy-Dawn/claude-scholar, 5.7k stars), Extract Design (Manavarya09/design-extract, 4.2k stars), Color Audit (rome-os/rome, 717 stars) and Material Design 3 UI/UX Guide (skydashnet/material-design-3-ui-skill, 130 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Tsh Implementing Forms?

TheSoftwareHouse (a GitHub organization) maintains it in TheSoftwareHouse/copilot-collections, which has 284 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on October 5, 2026.

Source: TheSoftwareHouse/copilot-collections on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.