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.

Informations de source

Dépôt
open-circle/formisch
Dernière activité de la source
9 août 2026 à 02:24
Langue détectée de SKILL.md
anglais
Étoiles
1 200
Forks
36

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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/`
Voir sur GitHub