Contributing Guidelines¶
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.
Table of Contents¶
- Getting Started
- Development Setup
- Code Style
- Testing
- Adding New Node Types
- Documentation
- Commit Messages
- Pull Request Process
- CI/CD
- Issue Reporting
Getting Started¶
- Fork the repository on GitHub.
- Clone your fork locally:
- Add the upstream remote to keep your fork in sync:
- Create a feature branch for your changes:
Development Setup¶
For detailed setup instructions, see the Development Guide.
Quick start:
- Install Node.js ≥ 18 and npm ≥ 9.
- Install dependencies:
- Set environment variables (required for LLM nodes):
- Build the project:
- Launch the extension in VS Code:
- Open the project folder in VS Code.
- Press F5 (Launch Extension).
- In the new window, run the command NebulaFlow: Open Workflow Editor.
Code Style¶
NebulaFlow follows a strict TypeScript style guide. Please adhere to the following:
TypeScript¶
- Strict mode is enabled. Ensure your code compiles without errors.
- Explicit type imports: Prefer
import type { Foo } from './bar'when only types are used. - Node.js built‑ins: Always use the
node:protocol (e.g.,import * as fs from 'node:fs'). - Functions: Keep them small and pure. Side effects should be isolated at boundaries (webview/engine).
- Naming:
- Variables & functions:
lowerCamelCase - Components & types:
PascalCase - Enums:
PascalCase(e.g.,NodeType) - Imports: Group external imports first, then internal imports. Sort alphabetically.
Linting & Formatting¶
We use Biome for linting and formatting.
- Run checks:
npm run check(typecheck + lint) - Auto‑fix:
npm run biome(also aliased asnpm run format)
Architecture¶
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.
Testing¶
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):
- [ ] LLM node streams output and respects thread continuation
- [ ] CLI node executes with approval, script mode, and safety levels
- [ ] If/Else node routes correctly based on condition
- [ ] Loop node iterates and updates loop variable
- [ ] Variable node sets and retrieves values
- [ ] Accumulator node concatenates outputs
- [ ] Preview node displays data
- [ ] Subflow node executes saved workflow
Adding New Node Types¶
To add a new node type, follow these steps (detailed in Development Guide):
- Define the node schema in
workflow/Core/models.ts(add a newNodeTypeand its data interface). - Create a UI component in
workflow/Web/components/nodes/. - Register the UI component in
workflow/Web/components/nodes/Nodes.tsx. - Implement the node runner in
workflow/WorkflowExecution/Application/node-runners/. - Register the node in the dispatcher (
workflow/WorkflowExecution/Application/handlers/NodeDispatch.ts). - Hook the runner into execution (
workflow/WorkflowExecution/Application/handlers/ExecuteWorkflow.tsandExecuteSingleNode.ts). - Update the node palette in
workflow/Web/components/sidebar/WorkflowSidebar.tsx. - Update documentation in
docs/user-guide/nodes/index.mdanddocs/api-reference/node-types.md.
Documentation¶
We value clear, accurate documentation. When adding or modifying features:
- Update the relevant markdown files in
docs/. - Ensure navigation is updated in
mkdocs.yml. - Verify links are correct and point to existing files.
- Keep examples executable and up‑to‑date.
Documentation style guide:
- Use clear, concise language.
- Include code examples where appropriate.
- Link to related topics.
- Keep documentation synchronized with code changes.
Commit Messages¶
We follow Conventional Commits. Format:
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style (formatting, linting)refactor: Code refactoringtest: Adding or updating testschore: Build process, tooling, dependencies
Example:
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 pi SDK execution
Closes #123
Pull Request Process¶
- Ensure your branch is up‑to‑date with upstream
main: - Run checks to verify your changes:
- Update documentation if you added or modified features.
- Create a pull request with a clear description:
- Reference any related issues.
- Include a summary of changes.
- Add a manual test checklist (if applicable).
- Wait for review. Address feedback promptly.
CI/CD¶
NebulaFlow uses GitHub Actions for continuous integration. The CI pipeline runs on pushes to main and dev branches and includes:
- Type checking and linting (
npm run check) - Building and packaging the extension (
npm run package:vsix) - Deploying documentation to GitHub Pages (when docs change)
You can run the same steps locally to verify your changes before pushing.
Issue Reporting¶
If you encounter a bug or have a feature request, please open an issue on GitHub.
Before opening an issue:
- Search existing issues to avoid duplicates.
- Provide a clear description and steps to reproduce.
- Include environment details (VS Code version, Node.js version, OS).
- For LLM‑related issues, mention which API key you are using (Amp or OpenRouter).
Questions?¶
Feel free to open a discussion on GitHub or reach out to the maintainers.
Last Updated: 2026-01-21