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.

ソース情報

リポジトリ
open-circle/formisch
ソースの最終更新活動
2026年7月29日 23:25
検出された SKILL.md の言語
英語
スター
1,205
フォーク
36

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
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
GitHubで見る