---
title: "Agent skill"
description: "Install and use the NotForm agent skill, which routes AI coding assistants to the right documentation instead of answering from memory."
canonical_url: "https://notformdocs.vercel.app/docs/ai/agent-skill"
---

> Index of every page on this site: [llms.txt](https://notformdocs.vercel.app/llms.txt)

The NotForm agent skill is a small instruction file for AI coding assistants. It does **not** contain API documentation. Its job is to make the assistant look things up: identify your setup, find the relevant pages, read them, and only then write code.

## Why a skill instead of more docs

A copy of the API inside the skill would go stale and compete with these docs. The skill instead holds the part that does not change: where to look, in what order, and the few rules that assistants break most often. The documentation stays the single source of truth.

## Install

The skill lives in the NotForm repository at [`.agents/skills/notform/SKILL.md`](https://github.com/favorodera/notform/blob/main/.agents/skills/notform/SKILL.md). To use it in your project, copy the `notform` folder into the skills directory your tool reads.

```text
your-project/
└── .agents/
    └── skills/
        └── notform/
            └── SKILL.md
```

Some tools use a different folder. For example, Claude Code reads project skills from `.claude/skills/`. Check your tool's documentation for the location it expects, and place the `notform` folder there.

Commit the folder so everyone working on the project gets the same behavior.

You can also use the [`skills`](https://www.skills.sh/favorodera/notform/notform) CLI to install it. It supports more than 35 agents, including Cursor, Claude Code, Codex, Windsurf, and Cline.

## Use it

The skill activates when you ask an assistant to build, debug, or migrate a NotForm form. It is also user-invocable, so in tools that support slash commands you can run it by name:

```text
/notform
```

Then describe the task:

> Build a registration form with username, email, and a repeatable list of phone numbers. Show server errors under each field.

## What the skill makes the assistant do

1. **Identify your stack and version.** It checks whether the project uses `notform` (Vue) or `@notform/nuxt` (Nuxt), and which version.
2. **Handle v3 first.** If the project is on NotForm 3.x, it reads the [migration guide](https://notformdocs.vercel.app/docs/migrations/notform-v3) before anything else.
3. **Read the index.** It loads [`llms.txt`](https://notformdocs.vercel.app/docs/ai/llms-txt) to see which pages exist.
4. **Load only what the task needs.** It maps the task to pages, for example "validation or errors" to the [Validation](https://notformdocs.vercel.app/docs/guides/validation) and [Errors](https://notformdocs.vercel.app/docs/guides/errors) guides, and fetches those as Markdown.
5. **Write from the pages.** If something is not documented, it says so instead of inventing options.

## Rules the skill reinforces

These are the mistakes assistants make most, and each is explained in the docs.

- Create fields with `form.field(path)` and `form.arrayField(path)`, and pass the instance to `Field` or `ArrayField`. See [Field](https://notformdocs.vercel.app/docs/components/field).
- Bind `field.model` and spread `field.events`, with `v-model` first. See [Binding inputs](https://notformdocs.vercel.app/docs/guides/binding-inputs).
- Schema **input** is what users edit. Schema **output** is what `onSubmit` receives. See [Schema input and output](https://notformdocs.vercel.app/docs/guides/schema-input-output).
- Give `initialValues` for every bound field.
- Use `item.id` as an array key, and change arrays only through their methods. See [Array fields](https://notformdocs.vercel.app/docs/guides/array-fields).
- Writes through `field.model` and `form.setValue` do not validate.
- Field configuration is read once, when the field is created. See [Validation](https://notformdocs.vercel.app/docs/guides/validation#configure-a-field).
- NotForm should be the only owner of a form's state. Do not combine it with another form library on the same form.

## Example prompts

<table>
<thead>
  <tr>
    <th>
      Goal
    </th>
    
    <th>
      Prompt
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      New form
    </td>
    
    <td>
      "Create a checkout form with NotForm and Zod. Validate on blur and show errors with accessible markup."
    </td>
  </tr>
  
  <tr>
    <td>
      Integration
    </td>
    
    <td>
      "Wire this form to our ShadcnVue inputs. Handle the <code>
        Field
      </code>
      
       name conflict."
    </td>
  </tr>
  
  <tr>
    <td>
      Debugging
    </td>
    
    <td>
      "My error message never clears after I fix the input. Find out why using the NotForm docs."
    </td>
  </tr>
  
  <tr>
    <td>
      Migration
    </td>
    
    <td>
      "Migrate this component from NotForm v3 to v4."
    </td>
  </tr>
  
  <tr>
    <td>
      Review
    </td>
    
    <td>
      "Review this form against the NotForm docs and list anything that is guessed."
    </td>
  </tr>
</tbody>
</table>

## Limits

- The skill needs the assistant to be able to fetch URLs. Without network access, it asks you for the relevant pages instead of guessing.
- The skill is a router. If the docs and your installed package disagree, trust the package's public exports and tell the maintainers.

## Related

- [llms.txt and Markdown pages](https://notformdocs.vercel.app/docs/ai/llms-txt)
- [Working with AI](https://notformdocs.vercel.app/docs/ai/working-with-ai)

## Sitemap

See the full [sitemap](https://notformdocs.vercel.app/sitemap.md) for all pages.
