nebulaflow

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

  1. Fork the repository on GitHub.
  2. Clone your fork locally:
    git clone https://github.com/your-username/nebulaflow.git
    cd nebulaflow
    
  3. Add the upstream remote to keep your fork in sync:
    git remote add upstream https://github.com/PriNova/nebulaflow.git
    
  4. Create a feature branch for your changes:
    git checkout -b feature/your-feature-name
    

Development Setup

For detailed setup instructions, see the Development Guide.

Quick start:

  1. Install Node.js ≥ 18 and npm ≥ 9.
  2. Install dependencies:
    npm install
    
  3. Set environment variables (required for LLM nodes):
    export AMP_API_KEY="your-amp-key"
    export OPENROUTER_API_KEY="your-openrouter-key"  # optional
    
  4. Build the project:
    npm run build
    
  5. 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

Linting & Formatting

We use Biome for linting and formatting.

Architecture

NebulaFlow uses a Vertical Slice Architecture (VSA). Key slices:

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):

Adding New Node Types

To add a new node type, follow these steps (detailed in Development Guide):

  1. Define the node schema in workflow/Core/models.ts (add a new NodeType and its data interface).
  2. Create a UI component in workflow/Web/components/nodes/.
  3. Register the UI component in workflow/Web/components/nodes/Nodes.tsx.
  4. Implement the node runner in workflow/WorkflowExecution/Application/node-runners/.
  5. Register the node in the dispatcher (workflow/WorkflowExecution/Application/handlers/NodeDispatch.ts).
  6. Hook the runner into execution (workflow/WorkflowExecution/Application/handlers/ExecuteWorkflow.ts and ExecuteSingleNode.ts).
  7. Update the node palette in workflow/Web/components/sidebar/WorkflowSidebar.tsx.
  8. Update documentation in docs/user-guide/nodes/index.md and docs/api-reference/node-types.md.

Documentation

We value clear, accurate documentation. When adding or modifying features:

  1. Update the relevant markdown files in docs/.
  2. Ensure navigation is updated in mkdocs.yml.
  3. Verify links are correct and point to existing files.
  4. Keep examples executable and up‑to‑date.

Documentation style guide:

Commit Messages

We follow Conventional Commits. Format:

<type>(<scope>): <subject>

<body>

<footer>

Types:

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 Amp SDK execution

Closes #123

Pull Request Process

  1. Ensure your branch is up‑to‑date with upstream main:
    git pull upstream main
    
  2. Run checks to verify your changes:
    npm run check
    
  3. Update documentation if you added or modified features.
  4. Create a pull request with a clear description:
    • Reference any related issues.
    • Include a summary of changes.
    • Add a manual test checklist (if applicable).
  5. 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:

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:

Questions?

Feel free to open a discussion on GitHub or reach out to the maintainers.


Last Updated: 2026-01-21