Thank you for your interest in contributing to NebulaFlow! We welcome contributions of all kinds: bug reports, documentation improvements, feature requests, and code contributions.
This document outlines the contribution process, coding standards, and development workflow.
git clone https://github.com/your-username/nebulaflow.git
cd nebulaflow
git remote add upstream https://github.com/PriNova/nebulaflow.git
git checkout -b feature/your-feature-name
For detailed setup instructions, see the Development Guide.
Quick start:
npm install
export AMP_API_KEY="your-amp-key"
export OPENROUTER_API_KEY="your-openrouter-key" # optional
npm run build
NebulaFlow follows a strict TypeScript style guide. Please adhere to the following:
import type { Foo } from './bar' when only types are used.node: protocol (e.g., import * as fs from 'node:fs').lowerCamelCasePascalCasePascalCase (e.g., NodeType)We use Biome for linting and formatting.
npm run check (typecheck + lint)npm run biome (also aliased as npm run format)NebulaFlow uses a Vertical Slice Architecture (VSA). Key slices:
workflow/Web/ – React UI, React Flow graph, node components, sidebars.workflow/Application/ – Message handling, command orchestration, lifecycle.workflow/Core/ – Pure types, models, validation.workflow/DataAccess/ – File system and shell adapters.workflow/WorkflowExecution/ – Graph execution engine, node runners.workflow/LLMIntegration/ – SDK integration, workspace configuration.workflow/Shared/ – Generic primitives (Host, Infrastructure).Rule: Keep related code together. Avoid creating global utilities unless used by 3+ unrelated slices.
Currently, there are no automated unit tests. Manual testing is performed by creating workflows with various node types and verifying execution, streaming, approvals, and pause/resume.
Manual test checklist (copy into your PR description):
To add a new node type, follow these steps (detailed in Development Guide):
workflow/Core/models.ts (add a new NodeType and its data interface).workflow/Web/components/nodes/.workflow/Web/components/nodes/Nodes.tsx.workflow/WorkflowExecution/Application/node-runners/.workflow/WorkflowExecution/Application/handlers/NodeDispatch.ts).workflow/WorkflowExecution/Application/handlers/ExecuteWorkflow.ts and ExecuteSingleNode.ts).workflow/Web/components/sidebar/WorkflowSidebar.tsx.docs/user-guide/nodes/index.md and docs/api-reference/node-types.md.We value clear, accurate documentation. When adding or modifying features:
docs/.mkdocs.yml.Documentation style guide:
We follow Conventional Commits. Format:
<type>(<scope>): <subject>
<body>
<footer>
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style (formatting, linting)refactor: Code refactoringtest: Adding or updating testschore: Build process, tooling, dependenciesExample:
feat(llm-node): add support for custom model parameters
- Extend LLM node data interface with `modelParams` field
- Update UI to allow editing model parameters
- Pass parameters to Amp SDK execution
Closes #123
main:
git pull upstream main
npm run check
NebulaFlow uses GitHub Actions for continuous integration. The CI pipeline runs on pushes to main and dev branches and includes:
npm run check)npm run package:vsix)You can run the same steps locally to verify your changes before pushing.
If you encounter a bug or have a feature request, please open an issue on GitHub.
Before opening an issue:
Feel free to open a discussion on GitHub or reach out to the maintainers.
Last Updated: 2026-01-21