Skip to main content

repo-structure-navigate

Navigate the Formisch monorepo structure. Use when finding code locations, understanding architecture, locating source files, or implementing features across packages and frameworks.

Quellinformationen

Repository
open-circle/formisch
Letzte Quellaktivität
29. Juli 2026 um 23:25
Erkannte Sprache von SKILL.md
Englisch
Sterne
1.205
Forks
36

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
repo-structure-navigate
description
Navigate the Formisch monorepo structure. Use when finding code locations, understanding architecture, locating source files, or implementing features across packages and frameworks.
metadata
{"author":"formisch","version":"1.0"}
# Repository Navigation Quick reference for understanding and navigating the Formisch repository structure. ## Overview **Formisch** is a schema-based, headless form library with a framework-agnostic core supporting multiple frameworks (Angular, Preact, Qwik, React, React Native, Solid, Svelte, Vue). Framework-specific reactivity is injected at build time for native performance. **Architecture:** - Monorepo with pnpm workspaces - Framework-agnostic core + framework-specific wrappers - TypeScript throughout with Valibot schemas ## Directory Structure ``` formisch/ ├── packages/ # Core packages │ ├── core/ # Framework-agnostic form logic │ └── methods/ # Form manipulation methods ├── frameworks/ # Framework-specific wrappers (angular, preact, qwik, react, react-native, 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) ``` ## Core Packages ### `/packages/core/` → `@formisch/core` Framework-agnostic form logic. Builds to framework-specific outputs via `tsdown.config.ts`. **Key directories:** - `src/array/` - Array field utilities - `src/field/` - Field management - `src/form/` - Form state management - `src/framework/` - Framework reactivity integration (injected at build time) - `src/types/` - TypeScript types ### `/packages/methods/` → `@formisch/methods` Form manipulation utilities. Each method in its own directory (`src/{method-name}/`). **Available methods:** focus, getDeepErrorEntries, getDeepErrors, getDirtyInput, getDirtyPaths, getErrors, getInput, handleSubmit, insert, move, pickDirty, remove, replace, reset, setErrors, setInput, submit, swap, validate ## Framework Packages ### `/frameworks/{framework}/` → `@formisch/{framework}` Thin wrappers that: 1. Export framework-specific core build 2. Provide framework-native components/primitives 3. Re-export methods **Structure:** ``` frameworks/{framework}/ ├── src/ │ ├── components/ # Form, Field components │ ├── primitives/ # createForm/useForm, useField, useFieldArray │ ├── types/ # Framework-specific types │ └── index.tsx # Main export ``` ## Playgrounds ### `/playgrounds/{framework}/` Minimal apps for testing. Use workspace dependencies (`workspace:*`). Run with `pnpm dev`. ## Website ### `/website/` Documentation site built with Qwik. Update when APIs change. ## Quick Reference ### Finding Code | 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/` | ### Commands ```bash pnpm install # Install dependencies pnpm build # Build a package pnpm test # Run tests pnpm lint # Lint and type check ``` ## Common Workflows ### Adding a Core Feature 1. Implement in `/packages/core/src/` 2. Add framework-specific code in `/packages/core/src/framework/` 3. Update exports in index files 4. Test in playgrounds 5. Update docs in `/website/` ### Adding a Method 1. Create `/packages/methods/src/{method-name}/` 2. Export from `/packages/methods/src/index.ts` 3. Test in playground and document on website ### Adding Framework Support 1. Create `/packages/core/src/framework/{framework}.ts` 2. Configure build in `tsdown.config.ts` 3. Create `/frameworks/{framework}/` package 4. Create playground in `/playgrounds/{framework}/` ## Important Rules ### Code Style - TypeScript throughout - Use Prettier and ESLint - Add JSDoc for public APIs - camelCase for functions/variables, PascalCase for components/types ### Imports - Relative imports within packages - Package imports across packages - Prefer named exports ### Testing - Tests next to implementation (`.test.ts`) - Use Vitest - Run: `pnpm test` ## Architecture **Framework-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: - Native performance per framework - Consistent behavior across frameworks - Minimal bundle size ## Best Practices - Code differs between frameworks - always check the target framework - Check playgrounds for real-world usage examples - TypeScript types are the source of truth - Follow existing patterns in the codebase - Test incrementally (build → test → playground) - Update website docs when changing APIs - Use `workspace:*` dependencies in playgrounds
Auf GitHub ansehen