Navigate the Formisch monorepo structure. Use when finding code locations, understanding architecture, locating source files, or implementing features across packages and frameworks.
Quick reference for understanding and navigating the Formisch repository structure.
Formisch is a schema-based, headless form library with a framework-agnostic core supporting multiple frameworks (Preact, Qwik, React, Solid, Svelte, Vue). Framework-specific reactivity is injected at build time for native performance.
Architecture:
formisch/
├── packages/ # Core packages
│ ├── core/ # Framework-agnostic form logic
│ └── methods/ # Form manipulation methods
├── frameworks/ # Framework-specific wrappers (preact, qwik, react, solid, svelte, vue)
├── playgrounds/ # Testing environments per framework
├── scripts/ # Automation scripts
├── website/ # Documentation site
├── skills/ # Agent skills (this folder)
└── prompts/ # Legacy AI agent guides (deprecated)
/packages/core/ → @formisch/coreFramework-agnostic form logic. Builds to framework-specific outputs via tsdown.config.ts.
Key directories:
src/array/ - Array field utilitiessrc/field/ - Field managementsrc/form/ - Form state managementsrc/framework/ - Framework reactivity integration (injected at build time)src/types/ - TypeScript types/packages/methods/ → @formisch/methodsForm manipulation utilities. Each method in its own directory (src/{method-name}/).
Available methods: focus, getAllErrors, getErrors, getInput, handleSubmit, insert, move, remove, replace, reset, setErrors, setInput, submit, swap, validate
/frameworks/{framework}/ → @formisch/{framework}Thin wrappers that:
Structure:
frameworks/{framework}/
├── src/
│ ├── components/ # Form, Field components
│ ├── primitives/ # createForm/useForm, useField, useFieldArray
│ ├── types/ # Framework-specific types
│ └── index.tsx # Main export
/playgrounds/{framework}/Minimal apps for testing. Use workspace dependencies (workspace:*). Run with pnpm dev.
/website/Documentation site built with Qwik. Update when APIs change.
| Looking for... | Location |
|---|---|
| Form state logic | /packages/core/src/form/ |
| Field management | /packages/core/src/field/ |
| Array utilities | /packages/core/src/array/ |
| Methods (submit, reset, etc.) | /packages/methods/src/{method-name}/ |
| Framework components | /frameworks/{framework}/src/components/ |
| Framework primitives | /frameworks/{framework}/src/primitives/ |
| Type definitions | /packages/core/src/types/ |
| Usage examples | /playgrounds/{framework}/src/ |
| Documentation | /website/src/routes/ |
pnpm install # Install dependencies
pnpm build # Build a package
pnpm test # Run tests
pnpm lint # Lint and type check
/packages/core/src//packages/core/src/framework//website//packages/methods/src/{method-name}//packages/methods/src/index.ts/packages/core/src/framework/{framework}.tstsdown.config.ts/frameworks/{framework}/ package/playgrounds/{framework}/.test.ts)pnpm testFramework-agnostic core - Written once, compiled to framework-specific versions via tsdown.config.ts. Framework reactivity is injected at build time from /packages/core/src/framework/{framework}.ts. This ensures:
workspace:* dependencies in playgrounds