Thank you for your interest in contributing!
git clone https://github.com/effectorHQ/effector-core.git
cd effector-core
npm test # 100+ tests, zero dependencies- Zero dependencies. All code uses only Node.js built-ins. No exceptions.
- ES Modules only. All files use
import/export. - Node 18+. We use
parseArgs,import.meta.url, etc. - Tests required. Every new function needs tests. Run
node --test tests/*.test.js. - TypeScript declarations. Update the corresponding
.d.tswhen changing a function signature.
src/
index.js Barrel export
toml-parser.js effector.toml parser (section-aware)
skill-parser.js SKILL.md parser (YAML + Markdown)
type-checker.js Type compatibility engine (36 bundled types)
schema-validator.js Manifest validation
compiler-targets.js Cross-runtime compiler (MCP, OpenAI, LangChain, JSON)
effector.js Fluent builder API
errors.js Structured error types
cli.js CLI binary
types-catalog.json Bundled 40-type catalog
*.d.ts TypeScript declarations
Use the plugin system instead of modifying the built-in switch:
import { registerTarget } from '@effectorhq/core';
registerTarget('my-runtime', (def) => {
return JSON.stringify({ name: def.name, ... });
}, { description: 'My runtime format', format: 'json' });If you believe a target should be built-in, open an issue first.
- Fork and create a branch
- Write code + tests
- Run
npm test— all tests must pass - Run
npm run lint— all files must parse - Submit PR with a clear description
- 2-space indentation
- Single quotes for strings
- Semicolons required
- JSDoc for all exported functions
- Descriptive variable names