Skip to content
Back to skills

Fusecore

ASecurity

Use when creating modules, understanding FuseCore structure, or implementing features in a FuseCore modular-monolith Laravel project.

  • 29 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 7, 2026
developmenttypescriptgophpbashreactapidatabasefrontend

Works with

  • api

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add fusengine/agents --skill fusecore --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fusecore?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fusecore
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/fusengine-fusecore/badge)](https://www.skillsdirectory.com/skills/fusengine-fusecore)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fusecore
description: Use when creating modules, understanding FuseCore structure, or implementing features in a FuseCore modular-monolith Laravel project.
versions:
  laravel: "13.0"
  php: "8.3"
  react: "19"
  typescript: "7.0"
user-invocable: true
references: references/architecture.md, references/module-structure.md, references/module-discovery.md, references/module-json.md, references/contracts.md, references/traits.md, references/service-provider.md, references/react-integration.md, references/routes.md, references/migrations.md, references/i18n.md, references/creating-module.md
related-skills: solid-php, laravel-permission, laravel-api
---

<objective>
FuseCore is a modular-monolith architecture for Laravel 13 with React 19
integration, built on auto-discovery (module.json), SOLID principles, and
per-module isolation (models, migrations, routes, React resources, i18n).
Covers creating new modules, understanding the FuseCore directory structure
and module-discovery mechanism, and implementing features inside FuseCore
projects — module contracts, traits (HasModule), service providers, and
cross-module dependency declaration.
</objective>

# FuseCore Modular Architecture

## Agent Workflow (MANDATORY)

Before ANY implementation in FuseCore project, spawn 3 agents in parallel, one `Agent` call each with a `name`:

1. **fuse-ai-pilot:explore-codebase** - Analyze existing modules in `/FuseCore/`
2. **fuse-ai-pilot:research-expert** - Verify Laravel 13 patterns via Context7
3. **fuse-laravel:laravel-expert** - Apply Laravel best practices

After implementation, run **fuse-ai-pilot:sniper** for validation.

---

## Overview

FuseCore is a **Modular Monolith** architecture for Laravel 13 with React 19 integration.

| Component | Purpose |
|-----------|---------|
| **Module** | Self-contained feature (User, Dashboard, Blog) |
| **Auto-Discovery** | Automatic registration via `module.json` |
| **Traits** | `HasModule` for resource loading |
| **Contracts** | `ModuleInterface`, `ReactModuleInterface` |
| **React Integration** | Isolated React per module |
| **i18n** | Multi-language support (FR/EN/DE/IT/ES) |

---

## Critical Rules

1. **All code in `/FuseCore/{Module}/`** - Never in `/app/`
2. **One module.json per module** - Required for discovery
3. **ServiceProvider per module** - Use `HasModule` trait
4. **Files < 100 lines** - Split at 90 lines (SOLID)
5. **Interfaces in `/App/Contracts/`** - Never in components
6. **Migrations in module** - `/Database/Migrations/`
7. **Routes in module** - `/Routes/api.php`

---

## Architecture Overview

```
FuseCore/
├── Core/                    # Infrastructure (priority 0)
│   ├── App/
│   │   ├── Contracts/       # ModuleInterface, ReactModuleInterface
│   │   ├── Services/        # ModuleDiscovery, RouteAggregator
│   │   ├── Traits/          # HasModule, HasModuleDatabase
│   │   └── Providers/       # FuseCoreServiceProvider
│   ├── Config/fusecore.php
│   └── module.json
│
├── User/                    # Auth module
│   ├── App/Models/          # User.php, Profile.php
│   ├── Config/              # Module config (sanctum.php, etc.)
│   ├── Database/Migrations/
│   ├── Resources/React/     # Isolated React
│   ├── Routes/api.php
│   └── module.json          # dependencies: []
│
└── {YourModule}/            # Your new module
    ├── App/
    │   ├── Models/
    │   ├── Http/Controllers/
    │   ├── Services/
    │   └── Providers/{YourModule}ServiceProvider.php
    ├── Config/              # Module-specific config
    ├── Database/Migrations/
    ├── Resources/React/
    ├── Routes/api.php
    └── module.json          # dependencies: ["User"]
```

---

## Reference Guide

### Architecture

| Topic | Reference | When to consult |
|-------|-----------|-----------------|
| **Overview** | [architecture.md](references/architecture.md) | Understanding FuseCore design |
| **Module Structure** | [module-structure.md](references/module-structure.md) | Directory organization |
| **Auto-Discovery** | [module-discovery.md](references/module-discovery.md) | How modules are loaded |
| **module.json** | [module-json.md](references/module-json.md) | Module configuration |

### Implementation

| Topic | Reference | When to consult |
|-------|-----------|-----------------|
| **Contracts** | [contracts.md](references/contracts.md) | ModuleInterface, ReactModuleInterface |
| **Traits** | [traits.md](references/traits.md) | HasModule, HasModuleDatabase |
| **ServiceProvider** | [service-provider.md](references/service-provider.md) | Module registration |
| **Routes** | [routes.md](references/routes.md) | API routing |

### Resources

| Topic | Reference | When to consult |
|-------|-----------|-----------------|
| **React Integration** | [react-integration.md](references/react-integration.md) | Frontend per module |
| **Migrations** | [migrations.md](references/migrations.md) | Database per module |
| **i18n** | [i18n.md](references/i18n.md) | Multi-language setup |

### Guides

| Topic | Reference | When to consult |
|-------|-----------|-----------------|
| **Creating Module** | [creating-module.md](references/creating-module.md) | Step-by-step guide |

---

### Templates (Code Examples)

| Template | Purpose |
|----------|---------|
| [module.json.md](references/templates/module.json.md) | Module configuration |
| [ServiceProvider.php.md](references/templates/ServiceProvider.php.md) | Module service provider |
| [Controller.php.md](references/templates/Controller.php.md) | API controller |
| [Model.php.md](references/templates/Model.php.md) | Eloquent model |
| [Migration.php.md](references/templates/Migration.php.md) | Database migration |
| [ReactStructure.md](references/templates/ReactStructure.md) | React module structure |
| [ApiRoutes.php.md](references/templates/ApiRoutes.php.md) | API routes file |
| [Resource.php.md](references/templates/Resource.php.md) | API Resource |
| [Request.php.md](references/templates/Request.php.md) | Form Request |
| [Service.php.md](references/templates/Service.php.md) | Business logic service |

---

## Quick Reference

### Create New Module

```bash
# 1. Create directory structure
mkdir -p FuseCore/{ModuleName}/{App/{Models,Http/Controllers,Services,Providers},Database/Migrations,Resources/React,Routes}

# 2. Create module.json
# 3. Create ServiceProvider with HasModule trait
# 4. Create routes/api.php
# 5. Run: php artisan fusecore:cache-clear
```

### module.json

```json
{
    "name": "ModuleName",
    "version": "1.0.0",
    "enabled": true,
    "isCore": false,
    "dependencies": ["User"]
}
```

### ServiceProvider

```php
class ModuleNameServiceProvider extends ServiceProvider
{
    use HasModule;

    public function boot(): void
    {
        $this->loadModuleMigrations();
    }
}
```

### Routes

```php
Route::middleware(['api', 'auth:sanctum'])->group(function () {
    Route::apiResource('items', ItemController::class);
});
```

---

## Module Checklist

- [ ] `/FuseCore/{Module}/` directory created
- [ ] `module.json` with name, version, dependencies
- [ ] `{Module}ServiceProvider.php` with `HasModule` trait
- [ ] Routes in `/Routes/api.php`
- [ ] Migrations in `/Database/Migrations/`
- [ ] Models in `/App/Models/`
- [ ] Controllers in `/App/Http/Controllers/`
- [ ] React in `/Resources/React/` (if needed)
- [ ] i18n in `/Resources/React/i18n/locales/`

---

## SOLID Compliance

| Rule | FuseCore Implementation |
|------|-------------------------|
| **Single Responsibility** | One module = one feature |
| **Open/Closed** | Extend via `ModuleInterface` |
| **Liskov Substitution** | `ReactModuleInterface extends ModuleInterface` |
| **Interface Segregation** | Separate contracts |
| **Dependency Inversion** | Inject via ServiceProvider |

**File limits**: All files < 100 lines. Split at 90.

---

## Naming Conventions

| Type | Convention | Example |
|------|------------|---------|
| Module folder | PascalCase | `BlogPost` |
| module.json name | PascalCase | `"name": "BlogPost"` |
| ServiceProvider | `{Module}ServiceProvider` | `BlogPostServiceProvider` |
| Controller | `{Resource}Controller` | `PostController` |
| Model | Singular | `Post` |
| Migration | `create_{table}_table` | `create_posts_table` |
| Routes file | `api.php` | Always `api.php` |

---

## Laravel 13 Notes

### Stack FuseCore L13
- **Laravel 13** (stable 13.33) + **PHP 8.3** minimum
- **React 19** + **TypeScript 7** (module frontend side) — TS 7.0 has no compiler API: typescript-eslint (peer `typescript <6.1.0`) requires the alias `"typescript": "npm:@typescript/typescript6@^6.0.2"` + `"@typescript/native": "npm:typescript@^7.0.2"` (`npx tsc` = 7.0)
- **Inertia 3** (`inertiajs/inertia-laravel` ^3.0) for the React ↔ modules bridge

### Module ServiceProvider and L13
Bindings in `register()`, observers/hooks in `boot()`. L13 reminder: instantiating a model **during its own boot** (`new static()` inside the model's `boot()` or a trait's `boot*()`) throws a `LogicException`.

```php
public function register(): void
{
    $this->app->bind(PostRepositoryContract::class, EloquentPostRepository::class);
}

public function boot(): void
{
    Post::observe(PostObserver::class);
}
```

### Per-module cache prefixes
L13 uses hyphens by default. For FuseCore, configuring the prefix per module via `module.json` remains compatible:

```json
{
  "name": "BlogPost",
  "cache_prefix": "blogpost-"
}
```

## Best Practices

### DO
- One module = one complete `FuseCore/<Module>/` folder (Contracts/, Services/, Http/, Models/)
- Declare every inter-module dependency via Contracts (never concrete classes)
- Use `final readonly class` for module DTOs (PHP 8.3+)
- Move all Model logic from `register()` to `boot()`
- Prefer Inertia 3 + React 19 for modules with a UI

### DON'T
- Import a class from another module without going through its Contract
- Put business logic in Controllers (extract it into a module Service)
- Instantiate a model during its own boot (`new static()` inside `boot()` → LogicException in L13)
- Exceed 100 lines per file (split into sub-modules or Services)
- Share migrations between modules (each module owns its tables)

Files in this skill

  • SKILL.md7.9 KB
  • references/architecture.md3.5 KB
  • references/contracts.md3.8 KB
  • references/creating-module.md4.9 KB
  • references/i18n.md4.1 KB
  • references/migrations.md4 KB
  • references/module-discovery.md3.7 KB
  • references/module-json.md4.1 KB
  • references/module-structure.md4.7 KB
  • references/react-integration.md4.4 KB
  • references/routes.md3.6 KB
  • references/service-provider.md3.7 KB
  • references/templates/ApiRoutes.php.md3.8 KB
  • references/templates/Controller.php.md4.3 KB
  • references/templates/Migration.php.md3.8 KB
  • references/templates/Model.php.md3.8 KB
  • references/templates/ReactStructure.md5.2 KB
  • references/templates/Request.php.md3.8 KB
  • references/templates/Resource.php.md3.9 KB
  • references/templates/Service.php.md3.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…