| name | atomic-framework-cli-api |
| description | Use when working on Atomic CLI commands, API entrypoints, console input/output, scaffolders, init flows, migrations/queue/scheduler CLI subcommands, or command-facing bootstrap logic. |
| argument-hint | CLI commands, php atomic, API routes, scaffolding, console output |
| user-invocable | true |
Atomic Framework CLI and API
When to Use
- Running or building
php atomic commands.
- Registering new CLI routes or command handlers.
- Working on API entrypoints or API-only request handling.
- Building or modifying init/scaffold flows.
Engine Files
engine/Atomic/CLI/* (CLI, Capabilities, Console/, DB, File, Init, Init/, Migrations, Queue, Scheduler, Seeder, Style), engine/Atomic/API/* (Api)
Reference Docs
docs/cli.md, docs/database.md, docs/migrations.md, docs/queue.md, docs/scheduler.md
Running Commands
php atomic help
php atomic version
php atomic routes
php atomic classes
php atomic custom-hive
php atomic cache/clear
php atomic redis/clear
php atomic migrations/init
php atomic migrations/create create_posts_table
php atomic migrations/migrate
php atomic migrations/rollback
php atomic migrations/status
php atomic migrations/publish monopay
php atomic queue/worker default
php atomic queue/monitor
php atomic queue/retry
php atomic queue/retry <job_uuid>
php atomic queue/delete <job_uuid>
php atomic schedule/run
php atomic schedule/work
php atomic schedule/work 30
php atomic schedule/list
php atomic schedule/test
php atomic schedule/help
php atomic db/tables
php atomic db/truncate <table_name>
php atomic db/truncate/queue
php atomic db/sessions
php atomic db/users
php atomic db/pages
php atomic db/storage
php atomic db/mutex
php atomic db/queue
php atomic logs/rotate
php atomic file/csv2pdf input.csv output.pdf
php atomic file/xls2pdf input.xls output.pdf
php atomic seed/users
php atomic seed/roles
php atomic seed/pages
php atomic queue/test success
php atomic queue/test failure
php atomic queue/test timeout
php atomic queue/test/monitor
php atomic init
php atomic init/key
php atomic init/guide
CLI Entry Point
App::handle_command($argv) normalizes schedule:run → /schedule/run and dispatches through the F3 router.
CLI routes live in routes/cli.php:
$app->route('GET /my-command', 'App\\CLI\\MyHandler->run');
See atomic-framework-cli-entrypoint/SKILL.md for the recommended project-level CLI stub (atomic) with shebang and bootstrap example.
CLI Command Handler Pattern
namespace App\CLI;
final class SendReport
{
public function run(\Base $f3, array $params): void
{
$output = new \Engine\Atomic\CLI\Console\Output();
$output->line('Sending report...');
exit(0);
}
}
Console Output
Engine\Atomic\CLI\Console\Output - write to stdout/stderr.
Engine\Atomic\CLI\Console\Input - read from stdin.
$output = new \Engine\Atomic\CLI\Console\Output();
$output->line('Processing...');
$output->error('Something went wrong');
$input = new \Engine\Atomic\CLI\Console\Input();
$value = $input->ask('Enter name: ');
Style (ANSI Colors)
Engine\Atomic\CLI\Style -- ANSI color helpers; auto-disabled when the terminal does not support colors (Capabilities::supports_colors()).
use Engine\Atomic\CLI\Style;
echo Style::green('Done!') . PHP_EOL;
echo Style::red('Error!') . PHP_EOL;
echo Style::yellow('Warning') . PHP_EOL;
echo Style::cyan('Info') . PHP_EOL;
echo Style::bold('Important') . PHP_EOL;
echo Style::success_label() . ' Job complete' . PHP_EOL;
echo Style::error_label() . ' Failed' . PHP_EOL;
echo Style::warning_label() . ' Deprecated' . PHP_EOL;
echo Style::green('Success', bold: true) . PHP_EOL;
Init and Scaffold
Engine\Atomic\CLI\Init dispatches to:
InitInstaller - sets up a fresh project (config, directories, composer packages)
InitScaffold - generates boilerplate files (controllers, models, migrations)
php atomic init
php atomic init/key
php atomic init/guide
DB CLI Commands
Engine\Atomic\CLI\DB exposes database introspection and admin commands.
php atomic db/tables
php atomic db/truncate posts
php atomic db/sessions
php atomic db/storage
php atomic db/mutex
API Entrypoint
Engine\Atomic\API\Api is a trait (not a base class) for use in API controllers. It provides helpers for reading the request body and sending JSON responses.
namespace App\Http\Controllers\API;
use Engine\Atomic\API\Api;
final class UserController
{
use Api;
public function show(\Base $f3, array $params): void
{
$uuid = $this->param('uuid');
$data = $this->body();
$user = User::find($uuid);
if (!$user) {
$this->fail('Not found', 404);
return;
}
$this->json(['user' => $user->cast()]);
}
}
Api trait methods:
| Method | Signature | Description |
|---|
json() | json(mixed $data, int $code = 200): void | Send JSON response |
fail() | fail(string $msg, int $code = 400, array $extra = []): void | Send JSON error |
body() | body(): array | Parse request body (JSON, POST, or GET) |
param() | param(string $key, mixed $default = null): mixed | Get route param from PARAMS |
Routes under /api/* are loaded from routes/api.php.
Capabilities
Engine\Atomic\CLI\Capabilities registers what CLI commands the framework can handle. Check this when adding a new command family.
Guardrails
- CLI controllers must call
exit(0) or exit(1) explicitly.
- API controllers must always return JSON - never HTML.
- Keep scaffold-generated files minimal and idiomatic.