スキル一覧に戻る
karloscodes

fusionaly-boundaries

by karloscodes

1🍴 0📅 2026年1月16日
GitHubで見るManusで実行

SKILL.md


name: fusionaly-boundaries description: Use when working on Fusionaly OSS or Pro - enforces clean separation between repos, prevents Pro features in OSS, forbids modifying OSS from Pro

Fusionaly Boundaries

Overview

Fusionaly has two repos with strict boundaries. OSS is the open-source core. Pro extends OSS via git submodule without modifying it.

Repository Structure

fusionaly-oss/              # Standalone open-source product
├── app/                    # Public API (Pro imports from here)
├── internal/               # OSS internals (Pro cannot import)
└── web/src/                # OSS React components

fusionaly-pro/              # Commercial extension
├── oss/                    # Git submodule → fusionaly-oss (READ-ONLY!)
├── internal/               # Pro-only code
└── web/src/                # Pro React components

The Rules

When Working in OSS

✅ Do❌ Don't
Keep it fully standaloneAdd AI/LLM features
Export via app/ packageAdd license validation
Provide extension pointsReference Pro repo
Test with make test-e2eAdd "Pro" conditionals

OSS must work without Pro. No AI, no licensing, no Pro feature flags.

When Working in Pro

✅ Do❌ Don't
Import from fusionaly/appImport from fusionaly/internal/*
Override routes (Pro first)Modify files in ./oss/
Extend via props/hooksAdd functions to OSS "for Pro"
Test with make test-allCommit OSS changes from Pro

Pro extends OSS via public API only. Never edit the submodule directly.

Import Rules (Pro)

// ✅ GOOD
import "fusionaly/app"

// ❌ FORBIDDEN
import "fusionaly/internal/analytics"

Red Flags - STOP

In OSS, stop if you're adding:

  • OpenAI or LLM integration
  • License key handling
  • AI insights or Lens features
  • "Pro" in any name

In Pro, stop if you're:

  • Editing any file in ./oss/
  • Importing from fusionaly/internal/*
  • Adding exports to OSS for Pro's benefit

Extension Pattern

OSS provides hooks, Pro uses them:

// OSS: Provides extension point
func HandleDashboardWithExtension(ctx, component string, extender func(props) props) error {
    props := buildProps(ctx)
    if extender != nil {
        props = extender(props)  // Pro injects here
    }
    return render(component, props)
}

// Pro: Uses extension point
func proDashboardExtender(props map[string]any) map[string]any {
    props["insights"] = ai.GetInsights()  // Pro-only data
    return props
}

If OSS Needs Changes

  1. Work in fusionaly-oss repo directly (not the submodule)
  2. Make changes, test: make test && make test-e2e
  3. Commit and push to OSS
  4. In Pro: make update-oss to pull changes

Quick Reference

TaskLocationCommand
Add OSS featurefusionaly-ossmake test
Add Pro featurefusionaly-pro/internalmake test
Extend OSS behaviorPro via fusionaly/appmake test-all
Update OSS in Profusionaly-promake update-oss

スコア

総合スコア

50/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です