flamework-roblox-ts

flamework-roblox-ts

Build Roblox games with Flamework, a TypeScript framework. Use when creating services, controllers, components, networking (RemoteEvents/RemoteFunctions), dependency injection, lifecycle events, or working with Flamework decorators, macros, and configuration.

0
0포크
업데이트됨 1/23/2026
SKILL.md
readonlyread-only
name
flamework-roblox-ts
description

Build Roblox games with Flamework, a TypeScript framework. Use when creating services, controllers, components, networking (RemoteEvents/RemoteFunctions), dependency injection, lifecycle events, or working with Flamework decorators, macros, and configuration.

version
1.0.0

Flamework for Roblox-TS - Claude Code Skill

A comprehensive skill for working with Flamework, the TypeScript game framework for Roblox.

Overview

Flamework is an extensible TypeScript game framework for Roblox that provides singletons, dependency injection, networking, and a component system with minimal boilerplate.

What This Skill Covers:

  • Core Framework: Services, controllers, dependency injection, lifecycle events
  • Networking: Type-safe RemoteEvents and RemoteFunctions with automatic guard generation
  • Components: Entity-component system with attributes and lifecycle support
  • Configuration: Complete project setup, tsconfig.json, and runtime configuration
  • Macros: Compile-time utilities like Flamework.id, createGuard, and hash
  • Modding: Creating custom decorators, metadata system, and extending Flamework

Documentation Source: Based on official Flamework documentation (https://flamework.fireboltofdeath.dev/) - current as of Flamework v1.0+

Quick Start

Basic Service/Controller

import { Service, OnStart } from "@flamework/core";

@Service()
export class MyService implements OnStart {
    onStart() {
        print("Service started!");
    }
}

Dependency Injection

import { Service } from "@flamework/core";
import { OtherService } from "./other-service";

@Service()
export class MyService {
    // Dependencies injected via constructor
    constructor(private otherService: OtherService) {}
    
    method() {
        this.otherService.doSomething();
    }
}

Runtime Initialization

// runtime.server.ts or runtime.client.ts
import { Flamework } from "@flamework/core";

// Preload paths (services, controllers, components)
Flamework.addPaths("src/server/services/");
Flamework.addPaths("src/server/components/");

// Start the framework
Flamework.ignite();

Core Concepts

Singletons

Services (@Service) run on server, Controllers (@Controller) run on client. Only one instance created per class. Load order determined automatically by dependencies or via loadOrder option.

Lifecycle Events

Implement interfaces to hook into lifecycle: OnStart, OnInit, OnTick, OnPhysics, OnRender (client only). Prefer OnStart over OnInit (OnInit blocks sequential execution).

Dependency Resolution

Use constructor DI (preferred) or Dependency<T>() macro. Framework automatically determines load order from constructor dependencies.

When to Use This Skill

  • Setting up Flamework project structure
  • Creating services, controllers, or components
  • Implementing networking with type-safe RemoteEvents/RemoteFunctions
  • Using dependency injection patterns
  • Working with lifecycle events
  • Configuring Flamework (tsconfig.json, flamework.json)
  • Using Flamework macros (Flamework.id, Flamework.createGuard, etc.)
  • Extending Flamework with custom decorators

Detailed Documentation

This skill uses progressive disclosure for efficient context usage:

  • SKILL.md (this file): Quick reference and common patterns (always loaded)
  • Reference files: Detailed documentation (loaded only when needed)

Available Reference Files:

  • QUICKSTART.md - Complete setup guide for new projects
  • CORE.md - Services, controllers, dependency injection, lifecycle events
  • NETWORKING.md - RemoteEvents, RemoteFunctions, middleware, type guards
  • COMPONENTS.md - Component system, attributes, configuration
  • CONFIGURATION.md - tsconfig.json, flamework.json, project setup
  • MACROS.md - Utility macros and compile-time features
  • MODDING.md - Creating custom decorators, metadata system

Usage Tips

This skill activates when you mention Flamework-related concepts:

  • "Create a Flamework service with dependency injection"
  • "Set up RemoteEvents for combat system"
  • "Make a health component with regeneration"
  • "Configure Flamework for production"
  • "Use Flamework.createGuard to validate data"
  • "Create a custom decorator"

For best results:

  1. Be specific about what you're building (service, component, networking, etc.)
  2. Mention Flamework explicitly to trigger the skill
  3. Ask for complete examples when learning new concepts
  4. Request configuration help when setting up projects
  5. Use progressive queries - start general, then ask for specific details

Common Patterns

Service with Dependencies

@Service()
export class PlayerService implements OnStart {
    constructor(
        private dataService: DataService,
        private components: Components
    ) {}
    
    onStart() {
        // Initialize after dependencies ready
    }
}

RemoteEvent Communication

// shared/networking.ts
import { Networking } from "@flamework/networking";

interface ClientToServer {
    requestData(id: string): void;
}

interface ServerToClient {
    updateData(id: string, data: unknown): void;
}

export const GlobalEvents = Networking.createEvent<ClientToServer, ServerToClient>();

// server/networking.ts
export const Events = GlobalEvents.createServer();

// client/networking.ts
export const Events = GlobalEvents.createClient();

Component with Attributes

import { Component, BaseComponent } from "@flamework/components";

interface Attributes {
    health: number;
    maxHealth: number;
}

@Component({ tag: "Health" })
export class HealthComponent extends BaseComponent<Attributes> implements OnStart {
    onStart() {
        print(`Health: ${this.attributes.health}/${this.attributes.maxHealth}`);
    }
}

Installation Quick Reference

# Install Flamework
npm i -D rbxts-transformer-flamework
npm i @flamework/core

# Optional modules
npm i @flamework/networking
npm i @flamework/components

tsconfig.json requirements:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "plugins": [{ "transform": "rbxts-transformer-flamework" }],
    "typeRoots": ["node_modules/@rbxts", "node_modules/@flamework"]
  }
}

default.project.json requirements:

{
  "node_modules": {
    "@rbxts": { "$path": "node_modules/@rbxts" },
    "@flamework": { "$path": "node_modules/@flamework" }
  }
}

Best Practices

  1. Use constructor DI over Dependency<T>() macro when possible
  2. Prefer OnStart over OnInit for lifecycle events
  3. Split networking into separate server/client files to hide server config from client
  4. Use progressive disclosure - Split large codebases with clear separation
  5. Leverage type guards - Flamework auto-generates guards for networking and components
  6. Structure by feature not by type (group related services/controllers/components together)

Troubleshooting

"Dependency called before ignition" - Use constructor DI or move Dependency() call after Flamework.ignite()

Components not loading - Check ancestorBlacklist/Whitelist, ensure CollectionService tag is set, verify instanceGuard passes

Network type guard failures - Ensure types are supported by guard generation, check middleware configuration

Load order issues - Let automatic resolution handle it, or specify loadOrder in decorator options

For detailed troubleshooting and advanced topics, see the reference documentation files.

Skill Coverage

Complete Flamework v1.0+ Feature Set:
✅ Core singletons and DI
✅ Lifecycle events (OnStart, OnTick, OnPhysics, OnRender)
✅ Full networking module with middleware
✅ Complete component system with attributes
✅ Configuration and setup (tsconfig, flamework.json)
✅ All utility macros (id, implements, createGuard, hash)
✅ Modding and extension API

Best Practices Emphasized:

  • Constructor DI over Dependency() macro
  • OnStart over OnInit for initialization
  • Type safety with automatic guard generation
  • Separate server/client networking files for security
  • Feature-based code organization
  • Progressive disclosure in large codebases

You Might Also Like

Related Skills

coding-agent

coding-agent

179Kdev-codegen

Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.

openclaw avataropenclaw
받기
add-uint-support

add-uint-support

97Kdev-codegen

Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.

pytorch avatarpytorch
받기
at-dispatch-v2

at-dispatch-v2

97Kdev-codegen

Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.

pytorch avatarpytorch
받기
skill-writer

skill-writer

97Kdev-codegen

Guide users through creating Agent Skills for Claude Code. Use when the user wants to create, write, author, or design a new Skill, or needs help with SKILL.md files, frontmatter, or skill structure.

pytorch avatarpytorch
받기

Implements JavaScript classes in C++ using JavaScriptCore. Use when creating new JS classes with C++ bindings, prototypes, or constructors.

oven-sh avataroven-sh
받기

Creates JavaScript classes using Bun's Zig bindings generator (.classes.ts). Use when implementing new JS APIs in Zig with JSC integration.

oven-sh avataroven-sh
받기