# Magic CLI - [Introduction](#introduction) - [Installation](#installation) - [Project Setup](#project-setup) - [magic init](#magic-init) - [key:generate](#keygenerate) - [Make Commands](#make-commands) - [make:model](#makemodel) - [make:controller](#makecontroller) - [make:view](#makeview) - [make:migration](#makemigration) - [make:seeder](#makeseeder) - [make:factory](#makefactory) - [make:policy](#makepolicy) - [make:lang](#makelang) - [Inspection Commands](#inspection-commands) - [route:list](#routelist) - [config:list](#configlist) - [config:get](#configget) - [Magic Boost (AI Integration)](#magic-boost) - [Setup](#setup) - [MCP Tools](#mcp-tools) - [IDE Configuration](#ide-configuration) ## Introduction Magic CLI is the Artisan-like command-line tool for Magic. If you've used Laravel's Artisan, you'll feel right at home. Scaffold controllers, models, views, migrations, and more with a single command. ## Installation Install Magic CLI globally via Dart's package manager: ```bash dart pub global activate fluttersdk_magic_cli ``` > [!NOTE] > Ensure `~/.pub-cache/bin` is in your system PATH to use the `magic` command globally. Verify installation: ```bash magic --version ``` ## Project Setup ### magic init Initializes Magic in an existing Flutter project with the recommended directory structure and configuration. ```bash cd my_flutter_app magic init ``` This command: 1. Adds `fluttersdk_magic` dependency to `pubspec.yaml` 2. Creates directory structure (`app/`, `config/`, `routes/`, etc.) 3. Generates configuration files with sensible defaults 4. Sets up service providers 5. Generates an application encryption key #### Excluding Features You can exclude features you don't need: ```bash # Skip specific features magic init --without-database magic init --without-cache magic init --without-auth magic init --without-events magic init --without-localization # Combine exclusions magic init --without-database --without-events ``` ### key:generate Generates a random encryption key for your application: ```bash magic key:generate ``` Updates your `.env` file with: ``` APP_KEY=base64:randomGeneratedKey... ``` ## Make Commands ### make:model Creates an Eloquent-style model with optional related files: ```bash magic make:model User magic make:model Post --migration --controller --factory magic make:model Comment -mcf # Shorthand magic make:model Product --all # Create everything ``` #### Options | Option | Shortcut | Description | |--------|----------|-------------| | `--migration` | `-m` | Create a database migration | | `--controller` | `-c` | Create a controller | | `--factory` | `-f` | Create a model factory | | `--seeder` | `-s` | Create a database seeder | | `--policy` | `-p` | Create an authorization policy | | `--all` | `-a` | Create all related files | **Output:** `lib/app/models/.dart` ### make:controller Creates a controller class: ```bash magic make:controller User magic make:controller UserController # Explicit naming magic make:controller Admin/Dashboard # Nested path ``` #### Options | Option | Shortcut | Description | |--------|----------|-------------| | `--stateful` | `-s` | Include `MagicStateMixin` for state management | | `--resource` | `-r` | Create resource controller with CRUD methods and views | **Output:** `lib/app/controllers/_controller.dart` ### make:view Creates a view class: ```bash magic make:view Login magic make:view LoginView # Explicit naming magic make:view Auth/Register # Nested path ``` #### Options | Option | Description | |--------|-------------| | `--stateful` | Create stateful view with `MagicFormData` support | **Output:** `lib/resources/views/_view.dart` ### make:migration Creates a database migration file: ```bash magic make:migration create_users_table magic make:migration add_email_to_users_table ``` #### Options | Option | Shortcut | Description | |--------|----------|-------------| | `--create` | `-c` | The table to be created | | `--table` | `-t` | The table to migrate | **Output:** `lib/database/migrations/_.dart` ### make:seeder Creates a database seeder: ```bash magic make:seeder UserSeeder ``` **Output:** `lib/database/seeders/.dart` ### make:factory Creates a model factory for generating fake data: ```bash magic make:factory User magic make:factory UserFactory # Explicit naming ``` **Output:** `lib/database/factories/_factory.dart` ### make:policy Creates an authorization policy: ```bash magic make:policy Post magic make:policy Comment --model=Comment ``` #### Options | Option | Shortcut | Description | |--------|----------|-------------| | `--model` | `-m` | The model that the policy applies to | **Output:** `lib/app/policies/_policy.dart` ### make:lang Creates a language JSON file: ```bash magic make:lang tr magic make:lang es magic make:lang de ``` **Output:** `assets/lang/.json` ## Inspection Commands ### route:list Lists all registered routes in your application: ```bash magic route:list ``` **Output:** ``` +---------------------+------------+----------+ | URI | Middleware | File | +---------------------+------------+----------+ | / | auth | app.dart | | /auth/login | - | auth.dart| | /dashboard | auth | app.dart | | /settings/team | auth | app.dart | +---------------------+------------+----------+ ``` ### config:list Lists all configuration files and their keys: ```bash magic config:list magic config:list --verbose # Show key previews ``` ### config:get Gets a specific configuration value using dot notation: ```bash magic config:get app.name # Output: My App magic config:get network.drivers.api.base_url # Output: http://localhost:8000/api/v1 magic config:get app.url --show-source # Output: http://localhost (from: .env) ``` **Priority:** Project config → `.env` → Framework defaults ## Magic Boost (AI Integration) Magic Boost provides AI-powered development tools through MCP (Model Context Protocol), allowing AI assistants like Claude to understand your Magic project. ### Setup Install Boost in your project: ```bash magic boost:install ``` This will: - Create `.magic/guidelines/` with framework documentation - Configure MCP server in your IDE (Cursor, VS Code) - Generate project-aware context for AI assistants ### Commands | Command | Description | |---------|-------------| | `boost:install` | Setup AI guidelines + MCP config | | `boost:mcp` | Run the MCP server (stdio) | | `boost:update` | Refresh guidelines to latest version | ### MCP Tools The MCP server exposes these tools to AI assistants: | Tool | Description | |------|-------------| | `app_info` | Get pubspec.yaml info (name, version, dependencies) | | `list_routes` | List all application routes | | `get_config` | Read config values with dot notation | | `validate_wind` | Validate Wind UI utility classes | | `search_docs` | Search Magic documentation | ### IDE Configuration After running `boost:install`, your IDE's MCP config is automatically updated: **`.cursor/mcp.json` or `.vscode/mcp.json`:** ```json { "mcpServers": { "magic-boost": { "command": "dart", "args": ["run", "fluttersdk_magic_cli:magic", "boost:mcp"], "cwd": "/path/to/your/project" } } } ``` ### Generated Guidelines After installation, `.magic/guidelines/` contains: ``` .magic/ └── guidelines/ ├── core.md # Core Magic framework ├── wind.md # Wind UI system ├── eloquent.md # Eloquent models └── routing.md # Routing system ``` These files provide context for AI assistants about your project's architecture and coding conventions. > [!TIP] > Run `magic boost:update` periodically to get the latest framework guidelines.