[{"data":1,"prerenderedAt":250},["ShallowReactive",2],{"content-\u002Fdocs\u002Fai-tooling\u002Fagent-skill":3},{"id":4,"title":5,"body":6,"description":230,"extension":231,"meta":232,"metaRows":233,"navigation":244,"path":245,"seo":246,"source":247,"stem":248,"__hash__":249},"docs\u002Fdocs\u002Fai-tooling\u002Fagent-skill.md","Agent Skill",{"type":7,"value":8,"toc":225},"minimark",[9,13,37,40,69,76,79,87,92,101,126,151,154,169,189,198,202,221],[10,11,5],"h1",{"id":12},"agent-skill",[14,15,16],"blockquote",{},[17,18,19,20,24,25,28,29,32,33,36],"p",{},"Attaform ships an Agent Skill: a ",[21,22,23],"code",{},"SKILL.md"," that teaches a coding assistant how to actually build a form, distilled from real Attaform apps into a short list of recipes and rules. Point an agent at it and the first form it writes reaches for ",[21,26,27],{},"useForm",", binds with ",[21,30,31],{},"v-register",", and submits through ",[21,34,35],{},"handleSubmit",", no correction round needed.",[38,39],"docs-meta-table",{},[17,41,42,43,50,51,57,58,61,62,65,66,68],{},"Attaform hands your coding assistant the same map the humans get. Three artifacts, all kept honest by the build: this installable skill, a curated ",[44,45,47],"a",{"href":46},"\u002Fdocs\u002Fai-tooling\u002Fllms-txt",[21,48,49],{},"llms.txt"," index, and a full-text ",[44,52,54],{"href":53},"\u002Fdocs\u002Fai-tooling\u002Fllms-full-txt",[21,55,56],{},"llms-full.txt"," dump. Left to guess, a low-context model reaches for whatever it assumes a form library looks like: the wrong import, a hand-rolled ",[21,59,60],{},"v-model",", a write straight through ",[21,63,64],{},"values",". The skill replaces that guess with the real shape. Where ",[21,67,49],{}," is a reference an agent reads, the skill is guidance an agent follows while it writes.",[17,70,71,72,75],{},"It is built for progressive disclosure. The main file covers the common case end to end: the import surface, the build-a-form shape, the core rules, and short wizard and SSR summaries. It links five reference files an agent loads only when the task reaches their area, served alongside it under ",[21,73,74],{},"references\u002F",": wizards, errors, custom components, SSR, and validation. The lean main keeps the everyday case cheap, and the depth is one hop away when a form needs it.",[77,78],"skill-viewer",{},[17,80,81,82,86],{},"Read or copy it above, or fetch it directly at ",[44,83,85],{"href":84},"\u002Fskill.md","attaform.dev\u002Fskill.md",".",[88,89,91],"h2",{"id":90},"install-it-into-your-project","Install it into your project",[17,93,94,96,97,100],{},[21,95,23],{}," is the portable skill format, read natively by Claude Code, Cursor, Codex, OpenCode, and more, so one file serves every assistant. The skill travels inside the ",[21,98,99],{},"attaform"," package, so one command copies it into place. From your project root:",[102,103,108],"pre",{"className":104,"code":105,"language":106,"meta":107,"style":107},"language-sh shiki shiki-themes github-light github-dark","npx attaform skill\n","sh","",[21,109,110],{"__ignoreMap":107},[111,112,115,119,123],"span",{"class":113,"line":114},"line",1,[111,116,118],{"class":117},"sScJk","npx",[111,120,122],{"class":121},"sZZnC"," attaform",[111,124,125],{"class":121}," skill\n",[17,127,128,129,132,133,132,136,139,140,143,144,147,148,86],{},"With no argument it places the skill next to whichever assistants your project already uses, reading ",[21,130,131],{},".claude\u002F",", ",[21,134,135],{},".cursor\u002F",[21,137,138],{},".codex\u002F",", and ",[21,141,142],{},".agents\u002F",", and falls back to the vendor-neutral ",[21,145,146],{},".agents\u002Fskills\u002F"," when it finds none. It prints where each copy lands. Aim it at a specific folder with a trailing path, for example ",[21,149,150],{},"npx attaform skill .cursor\u002Fskills",[17,152,153],{},"Run it again after you upgrade Attaform to refresh the skill in place: because it ships inside the package, running it in a project that has Attaform installed copies that exact version's skill, with no separate download to drift out of sync.",[17,155,156,157,160,161,164,165,168],{},"The skill ships under ",[21,158,159],{},"skills\u002F"," in the package, the same layout the ecosystem's skill loaders scan ",[21,162,163],{},"node_modules"," for, so those tools discover it too. You can also place it by hand from ",[21,166,167],{},"node_modules\u002Fattaform\u002Fskills\u002Fattaform\u002F",":",[102,170,172],{"className":104,"code":171,"language":106,"meta":107,"style":107},"cp -r node_modules\u002Fattaform\u002Fskills\u002Fattaform .agents\u002Fskills\u002F\n",[21,173,174],{"__ignoreMap":107},[111,175,176,179,183,186],{"class":113,"line":114},[111,177,178],{"class":117},"cp",[111,180,182],{"class":181},"sj4cs"," -r",[111,184,185],{"class":121}," node_modules\u002Fattaform\u002Fskills\u002Fattaform",[111,187,188],{"class":121}," .agents\u002Fskills\u002F\n",[17,190,191,192,194,195,197],{},"Assistant folders like ",[21,193,131],{}," and ",[21,196,135],{}," are often gitignored, so commit the installed skill directory if you want your whole team to share it. Either way, the assistant loads the Attaform skill whenever it works on a form in your repo.",[88,199,201],{"id":200},"when-to-reach-for-it","When to reach for it",[17,203,204,205,209,210,214,215,217,218,220],{},"Install the skill for an assistant working inside your codebase: every form it touches then follows the idioms without a reminder. For a one-off form in a chat window, the lighter ",[44,206,207],{"href":46},[21,208,49],{}," index is enough to paste; for a capable agent with room to spare, hand it the whole ",[44,211,212],{"href":53},[21,213,56],{}," manual. All three point the same direction: the schema is the form, ",[21,216,31],{}," binds it, and ",[21,219,35],{}," ships it.",[222,223,224],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":107,"searchDepth":226,"depth":226,"links":227},2,[228,229],{"id":90,"depth":226,"text":91},{"id":200,"depth":226,"text":201},"The installable Attaform skill, a SKILL.md that teaches a coding assistant to build a form the idiomatic way, distilled from real Attaform apps into short recipes and rules.","md",{},[234,237,239,242],{"label":235,"value":236},"Category","AI tooling",{"label":238,"value":23,"kind":21},"Format",{"label":240,"value":241,"kind":21},"Install","npx attaform skill",{"label":243,"value":84,"kind":21},"Served at",true,"\u002Fdocs\u002Fai-tooling\u002Fagent-skill",{"title":5,"description":230},null,"docs\u002Fai-tooling\u002Fagent-skill","skRo6vQof25f_me16KsQrS0YzVGfuJrpcXchwZwdMkU",1783558647533]