Skip to main content

repo-website-guide-create

Add new documentation guides and tutorials to the Formisch website. Use when creating guides about form concepts, features, or techniques that aren't covered by existing documentation.

来源信息

仓库
open-circle/formisch
最近来源活动
2026年8月9日 02:24
检测到的 SKILL.md 语言
英语
星标
1,200
分支
36

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
repo-website-guide-create
description
Add new documentation guides and tutorials to the Formisch website. Use when creating guides about form concepts, features, or techniques that aren't covered by existing documentation.
metadata
{"author":"formisch","version":"1.0"}
# Adding Documentation Guides This skill provides instructions for adding new documentation guides to the Formisch website. ## Directory Structure Guides are organized under `website/src/routes/{framework}/guides/`: ``` website/src/routes/{framework}/guides/ ├── menu.md # Navigation menu ├── layout.tsx # Layout wrapper ├── (category-name)/ # Route group (with parentheses) │ └── guide-name/ # Individual guide folder │ └── index.mdx # Guide content ``` **Categories**: - `(get-started)` - Introductory content - `(main-concepts)` - Core library concepts - `(advanced-guides)` - Advanced features - `(migration-guides)` - Migration from other form libraries - `(integration-guides)` - Integration with UI component libraries ## Step-by-Step Process ### Step 1: Choose Category Determine the appropriate category: - **(get-started)**: Introduction, Installation, LLMs.txt - **(main-concepts)**: Define form, Create form, Add fields, Handle submission - **(advanced-guides)**: Controlled fields, Field arrays, TypeScript - **(migration-guides)**: Migrate from React Hook Form, Migrate from TanStack Form - **(integration-guides)**: shadcn/ui, Chakra UI, Mantine (see `repo-website-integration-guide-create` for the required structure) ### Step 2: Create Guide Directory ```bash mkdir -p website/src/routes/{framework}/guides/(category-name)/guide-slug/ ``` - `{framework}` = angular, preact, qwik, react, react-native, solid, svelte, or vue - Use kebab-case for guide-slug ### Step 3: Create index.mdx ```mdx --- title: Guide Title description: >- A concise description of what this guide covers. contributors: - github-username --- import { Link } from '~/components'; # Guide Title Opening paragraph explaining what the reader will learn. ## Section Heading Content explaining the topic with clear, concise language. \`\`\`tsx // Code example with proper framework imports import { createForm, Field, Form } from '@formisch/solid'; import \* as v from 'valibot'; const Schema = v.object({ email: v.pipe(v.string(), v.email()), }); export default function Example() { const form = createForm({ schema: Schema }); return ( <Form of={form}> <Field of={form} path={['email']}> {(field) => <input {...field.props} value={field.input} />} </Field> </Form> ); } \`\`\` ## Another Section Continue with additional sections as needed. ``` ### Step 4: Update menu.md Add to `website/src/routes/{framework}/guides/menu.md`: ```markdown ## Category Name - [Existing Guide](/{framework}/guides/existing/) - [New Guide Title](/{framework}/guides/guide-slug/) ``` ## Content Guidelines ### Front Matter ```yaml --- title: Guide Title description: >- Multi-line descriptions use >- syntax. contributors: - github-username --- ``` ### Internal Links Use `Link` component with framework prefix: ```mdx import { Link } from '~/components'; See <Link href="/solid/guides/define-your-form/">define your form</Link>. See <Link href="/solid/api/createForm/">`createForm`</Link>. ``` ### Code Examples - Use `tsx` for components, `ts` for utilities - Import from `@formisch/{framework}` - Import Valibot as `import * as v from 'valibot'` - Use `v.nonEmpty()` for non-empty validation (not `v.minLength(1)`) ### Framework Terminology | Framework | API Category | | ------------ | ------------------------ | | Solid | "primitive" | | Qwik | "hook" | | Preact | "hook" | | React Native | "hook" | | Angular | "function" / "directive" | | Vue | "composable" | | Svelte | "rune" | ### Formatting - **Bold** for emphasis - `inline code` for API names, variables, files - Proper heading hierarchy (h1 → h2 → h3) - Concise, focused paragraphs - No em-dash pairs (`… — aside — …`); use commas, parentheses, or two sentences. A single trailing em dash is fine. ## Guide Structure Patterns ### Get Started Guide ```mdx # Introduction Opening explanation. ## Highlights Key features with brief descriptions. ## Basic Example Simple working code. ## Comparison Advantages over alternatives. ## Next Steps Links to related guides. ``` ### Main Concepts Guide ```mdx # Define Your Form Explains what the guide covers. ## Step 1: Create Schema Explanation with code. ## Step 2: Create Form Store Explanation with code. ## Common Patterns Variations and alternatives. ## Related Links to API docs and other guides. ``` ### Advanced Guide ```mdx # Field Arrays Overview of the feature. ## When to Use Scenarios where this applies. ## Implementation Detailed code examples. ## Edge Cases Special considerations. ## Performance Optimization tips. ``` ## Code Example Patterns ### Basic Form ```tsx import { createForm, Field, Form, type SubmitHandler } from '@formisch/solid'; import * as v from 'valibot'; const LoginSchema = v.object({ email: v.pipe(v.string(), v.email()), password: v.pipe(v.string(), v.minLength(8)), }); export default function LoginPage() { const loginForm = createForm({ schema: LoginSchema, }); const handleSubmit: SubmitHandler<typeof LoginSchema> = (output) => { console.log(output); }; return ( <Form of={loginForm} onSubmit={handleSubmit}> <Field of={loginForm} path={['email']}> {(field) => ( <div> <input {...field.props} value={field.input} type="email" /> {field.errors && <div>{field.errors[0]}</div>} </div> )} </Field> <button type="submit" disabled={loginForm.isSubmitting}> Login </button> </Form> ); } ``` ### Using Primitive vs Component ```mdx ### Using Field component \`\`\`tsx <Field of={form} path={['email']}> {(field) => <input {...field.props} value={field.input} />} </Field> \`\`\` ### Using useField primitive \`\`\`tsx const field = useField(form, { path: ['email'] }); return <input {...field.props} value={field.input} />; \`\`\` ``` ## Checklist Before submitting: - [ ] Directory follows pattern: `{framework}/guides/(category)/guide-slug/index.mdx` - [ ] Front matter has title, description, contributors - [ ] All internal links use `Link` component with framework prefix - [ ] Code examples use correct framework package - [ ] Guide added to menu.md in correct category - [ ] TypeScript examples properly typed - [ ] No spelling/grammar errors ## Source Code Verification When guides include Formisch APIs, verify correct usage: - **Framework APIs**: Check `frameworks/{framework}/src/` - **Methods**: Check `packages/methods/src/` - **Core types**: Check `packages/core/src/` - **Examples**: Check `playgrounds/{framework}/src/`
在 GitHub 查看