| name | coldbox-cli |
|---|---|
| description | Use this skill when using the ColdBox CLI (CommandBox module) to scaffold applications, generate handlers, models, services, views, layouts, interceptors, modules, ORM artifacts, tests, or manage AI integration. Covers all `coldbox create` commands, language flags (BoxLang vs CFML), app skeleton selection, feature flags (--docker, --vite, --rest, --migrations, --ai), template token patterns, layout detection, and AI integration sub-commands. |
| applyTo | **/*.{bx,bxm,cfc,cfm,cfml} |
Use this skill when:
- Creating a new ColdBox application from a skeleton
- Scaffolding any ColdBox artifact: handler, model, service, view, layout, interceptor, module
- Generating ORM entities, services, or CRUD scaffolding
- Generating test specs (BDD or xUnit, unit or integration)
- Running the interactive
app-wizardfor guided project creation - Managing AI integration (installing guidelines, skills, agents, MCP servers)
- Choosing between BoxLang (default) and CFML output
Examples use BoxLang (.bx) syntax by default. Adapt for your target language:
| Concept | BoxLang (.bx) |
CFML (.cfc) |
|---|---|---|
| Class declaration | class [extends="..."] { |
component [extends="..."] { |
| DI annotation | @inject above property name="svc"; |
property name="svc" inject="svc"; |
| View templates | .bxm suffix |
.cfm / .cfml suffix |
| Tag prefix | <bx:if>, <bx:output>, <bx:set> |
<cfif>, <cfoutput>, <cfset> |
CFML Compat Mode: With BoxLang + CFML Compat module,
.bxand.cfcfiles coexist freely. BoxLang-native classes useclass {}(.bxfiles); CFML-compat classes usecomponent {}(.cfcfiles).
All commands are prefixed with coldbox.
| Command | Purpose |
|---|---|
coldbox create app |
Create a ColdBox application from a skeleton |
coldbox create app-wizard |
Interactive guided wizard for app creation |
coldbox create handler |
Generate an event handler (controller) |
coldbox create service |
Generate a service model |
coldbox create model |
Generate a model object |
coldbox create view |
Generate a view template |
coldbox create layout |
Generate a layout template |
coldbox create interceptor |
Generate an interceptor |
coldbox create module |
Generate a ColdBox module scaffold |
coldbox create resource |
RESTful resource scaffolding (handler + model + views + tests) |
coldbox create orm-entity |
Generate an ORM entity |
coldbox create orm-service |
Generate an ORM service layer |
coldbox create orm-crud |
Generate CRUD handler + views from an ORM entity |
coldbox create orm-virtual-service |
Generate a virtual entity service |
coldbox create orm-event-handler |
Generate an ORM event handler |
coldbox create integration-test |
Generate a ColdBox integration test spec |
coldbox create bdd |
Generate a BDD spec (delegates to TestBox CLI) |
coldbox create unit |
Generate a xUnit bundle (delegates to TestBox CLI) |
coldbox create apidocs |
Generate API documentation |
| Command | Purpose |
|---|---|
coldbox ai install |
Install AI integration (guidelines, skills, agents, MCP) into the app |
coldbox ai refresh |
Sync guidelines/skills from installed modules |
coldbox ai info |
Display AI integration status |
coldbox ai doctor |
Diagnose AI setup issues |
coldbox ai tree |
Visualize the .ai/ resource structure |
coldbox ai stats |
Show context usage statistics |
coldbox ai guidelines list/add/remove |
Manage individual guidelines |
coldbox ai skills list/add/remove |
Manage individual skills |
coldbox ai agents list/add/remove |
Manage AI agent configuration files |
coldbox ai mcp list/add/remove |
Manage MCP server entries |
All coldbox create commands generate BoxLang (.bx) files by default. CFML (.cfc) output is opt-in.
The CLI automatically detects the project language using:
- Running server engine —
serverInfo.cfenginecontains"boxlang" box.json→testbox.runner == "boxlang"box.json→language == "boxlang"
If none of the above match and no flag is passed, BoxLang is still the default for new projects.
| Flag | Effect |
|---|---|
--boxlang |
Force BoxLang output (usually not needed; it's the default) |
--cfml |
Force CFML output — overrides auto-detection |
| Language | Source Extensions | Template Extensions |
|---|---|---|
| BoxLang | .bx |
.bxm (views/layouts) |
| CFML | .cfc |
.cfm (views/layouts) |
When generating BoxLang files, the CLI transforms CFML component keyword to BoxLang class automatically. You never need to handle this manually.
coldbox create app myApp # BoxLang (default)
coldbox create app myApp --cfml # CFML Modern layout
coldbox create app myApp skeleton=rest # REST API skeleton| Skeleton Name | ForgeBox Slug | Best For |
|---|---|---|
boxlang (default) |
cbtemplate-boxlang |
New BoxLang apps |
modern |
cbtemplate-modern |
CFML + BoxLang, app/ layout |
flat |
cbtemplate-flat |
CFML + BoxLang, flat layout |
rest |
cbtemplate-rest |
REST APIs |
rest-hmvc |
cbtemplate-rest-hmvc |
HMVC + REST |
supersimple |
cbtemplate-supersimple |
Bare-bones prototype |
vite |
cbtemplate-vite |
Frontend build (Vite) |
Any valid ForgeBox endpoint ID, Git URL, or HTTP URL can also be passed as skeleton:
coldbox create app skeleton=http://site.com/myTemplate.zip
coldbox create app skeleton=coldbox-templates/rest| Flag | What It Does | Compatible With |
|---|---|---|
--migrations |
Runs cfmigrations init after app creation |
All skeletons |
--docker |
Adds Docker files + docker-compose.yml |
All skeletons |
--vite |
Sets up Vite frontend asset pipeline | boxlang, modern |
--rest |
Configures the app as a REST API | BoxLang apps |
--ai |
Installs AI integration (.ai/ structure) |
All skeletons |
--aiAgent |
Agents to configure (comma-separated: claude,copilot,cursor) |
Requires --ai |
# Full-featured BoxLang REST API with all extras
coldbox create app myAPI \
skeleton=rest \
--migrations \
--docker \
--ai \
--aiAgent=claude,copilot
# Modern CFML app with Docker
coldbox create app myApp --cfml --docker --migrationsUse the wizard for a guided experience that prompts for language, skeleton, features, AI setup, and more:
coldbox create app-wizardGenerates an event handler (controller) with optional actions, views, and tests.
| Argument / Flag | Default | Description |
|---|---|---|
name (required) |
— | Handler name (e.g., users, admin.Users) |
actions |
"" |
Comma-separated list of actions to generate |
--views |
false |
Generate view stubs for each action |
--rest |
false |
Scaffold as a REST handler (extends RestHandler) |
--resource |
false |
Scaffold standard REST resource actions |
--integrationTests |
true |
Generate an integration test |
--force |
false |
Overwrite existing files |
--open |
false |
Open generated files after creation |
coldbox create handler users
coldbox create handler users actions=index,show,create,update,delete --views
coldbox create handler api/Users --rest
coldbox create handler photos --resource --integrationTestsGenerates a model class with optional properties, accessors, persistence, migration, seeder, and handler.
| Argument / Flag | Default | Description |
|---|---|---|
name (required) |
— | Model name (e.g., User, blog.Post) |
properties |
"" |
Comma-separated properties. Add ORM type via colon: firstName,age:numeric |
--accessors |
true |
Generate property accessors |
--persistence |
false |
Make it an ORM entity |
--migration |
false |
Generate a cfmigrations file |
--seeder |
false |
Generate a mock data seeder |
--handler |
false |
Generate a companion handler |
--rest |
false |
Make the companion handler a REST handler |
--resource |
false |
Make the companion handler a resource handler |
--all |
false |
Shortcut for --handler --migration --seeder |
--tests |
true |
Generate model unit tests |
--force |
false |
Overwrite existing files |
coldbox create model User
coldbox create model User properties=firstName,lastName,email
coldbox create model Post properties=title,body,publishedDate:timestamp --accessors --persistence
coldbox create model Product properties=name,price:numeric,stock:integer --allGenerates a service model with optional methods and tests.
| Argument / Flag | Default | Description |
|---|---|---|
name (required) |
— | Service name (e.g., UserService) |
methods |
"" |
Comma-separated method stubs to generate |
--tests |
true |
Generate a unit test spec |
--force |
false |
Overwrite existing files |
--open |
false |
Open generated files after creation |
coldbox create service UserService
coldbox create service OrderService methods=create,cancel,refund,getByUser --testsFull RESTful scaffolding: handler + model + views/API actions + optional tests, migration, and seeder.
Standard resource actions generated:
| HTTP Method | Route | Handler Action |
|---|---|---|
GET |
/photos |
photos.index |
GET |
/photos/new |
photos.new |
POST |
/photos |
photos.create |
GET |
/photos/:id |
photos.show |
GET |
/photos/:id/edit |
photos.edit |
POST/PUT/PATCH |
/photos/:id |
photos.update |
DELETE |
/photos/:id |
photos.delete |
API resources omit new and edit (HTML form) actions.
| Argument / Flag | Default | Description |
|---|---|---|
resource (required) |
— | Resource name, or comma-separated list |
handler |
resource name | Handler name override (only for single resource) |
singularName |
resource name | Singular model name |
parameterName |
id |
Route parameter name |
--api |
false |
Generate API (JSON) resource instead of HTML |
--model |
resource name | Companion model name |
--persistent |
false |
Generate model as ORM entity |
--tests |
true |
Generate integration and unit tests |
--migration |
false |
Generate cfmigrations for the entity |
--seeder |
false |
Generate a mock data seeder |
--force |
false |
Overwrite existing files |
# Basic resource
coldbox create resource photos
# Multiple resources at once
coldbox create resource photos,users,categories
# API resource with tests and migration
coldbox create resource photos --api --tests --migration
# ORM-backed resource
coldbox create resource photos singularName=Photo --persistent --migration --seederGenerates a view template.
coldbox create view users/index
coldbox create view users/show --helper # also creates view helper
coldbox create view home --cfml # force CFML .cfm extension| Flag | Default | Description |
|---|---|---|
--helper |
false |
Generate a companion view helper file |
--content |
"" |
Pre-populate with initial content |
--force |
false |
Overwrite existing files |
Generates a layout template.
coldbox create layout default
coldbox create layout admin --helper| Flag | Default | Description |
|---|---|---|
--helper |
false |
Generate a companion layout helper |
--content |
"" |
Pre-populate with initial content |
--force |
false |
Overwrite existing files |
Generates an interceptor with optional interception points and tests.
| Argument / Flag | Default | Description |
|---|---|---|
name (required) |
— | Interceptor name (e.g., SecurityInterceptor) |
points |
"" |
Comma-separated interception points to implement |
--tests |
true |
Generate a unit test spec |
--force |
false |
Overwrite existing files |
--open |
false |
Open files after creation |
coldbox create interceptor SecurityInterceptor
coldbox create interceptor AuditInterceptor points=preProcess,postProcess --tests
coldbox create interceptor SessionInterceptor points=afterAspectsLoad,preEventGenerates a full ColdBox module scaffold.
| Argument / Flag | Default | Description |
|---|---|---|
name (required) |
— | Module name (slug) |
author |
"" |
Author name for ModuleConfig |
description |
"" |
Module description |
version |
1.0.0 |
Module version |
cfmapping |
module name | ColdFusion mapping alias |
--ai |
false |
Include AI best practices |
--force |
false |
Overwrite existing files |
coldbox create module myModule author="Jane Doe" description="My custom module"
coldbox create module payments version=2.0.0 --aiGenerates an ORM-mapped entity class.
| Argument / Flag | Default | Description |
|---|---|---|
name (required) |
— | Entity name |
table |
entity name (pluralized) | Database table name |
--activeEntity |
false |
Extend cborm.models.ActiveEntity |
primaryKey |
id |
Primary key property name |
primaryKeyColumn |
primary key value | Column name if different |
generator |
native |
ORM key generator (increment, identity, uuid, guid, native, etc.) |
properties |
"" |
Comma-separated properties with optional ORM type: name,age:numeric |
--tests |
true |
Generate unit tests |
--handler |
false |
Generate a companion handler |
--rest |
false |
Make the companion handler a REST handler |
--resource |
false |
Make the companion handler a resource handler |
--all |
false |
Shortcut for handler + tests |
--force |
false |
Overwrite existing files |
coldbox create orm-entity User
coldbox create orm-entity Post table=blog_posts properties=title,body,publishedAt:timestamp
coldbox create orm-entity Product --activeEntity properties=name,price:numeric --allGenerates an ORM service extending cborm.models.VirtualEntityService.
| Argument / Flag | Default | Description |
|---|---|---|
name (required) |
— | Entity name the service will manage |
--queryCaching |
false |
Enable Hibernate query caching |
--eventHandling |
true |
Enable ORM event handling |
cacheRegion |
entity name | Cache region name |
--tests |
true |
Generate unit tests |
--force |
false |
Overwrite existing files |
coldbox create orm-service User
coldbox create orm-service Post --queryCaching --eventHandling cacheRegion=postCacheGenerates a handler + views for full CRUD based on an existing ORM entity.
coldbox create orm-crud User
coldbox create orm-crud Product pluralName=Products --testsGenerates a virtual entity service (no concrete class needed).
coldbox create orm-virtual-service User
coldbox create orm-virtual-service Post --queryCachingGenerates an ORM event handler for Hibernate lifecycle events.
coldbox create orm-event-handlerGenerates a ColdBox integration test spec.
| Argument / Flag | Default | Description |
|---|---|---|
name (required) |
— | Handler name to generate tests for |
actions |
"" |
Comma-separated actions to generate test cases for |
--bdd |
true |
Generate as BDD spec (default) |
--xunit |
false |
Generate as xUnit test case |
--force |
false |
Overwrite existing files |
--open |
false |
Open files after creation |
coldbox create integration-test users
coldbox create integration-test users actions=index,show,create
coldbox create integration-test users --xunitGenerates a TestBox BDD spec (delegates to testbox-cli).
coldbox create bdd UserSpecGenerates a TestBox xUnit bundle (delegates to testbox-cli).
coldbox create unit UserTestInstalls AI context files into the application's .ai/ directory.
# Default: BoxLang project, Claude agent
coldbox ai install
# Multiple agents
coldbox ai install --aiAgent=claude,copilot,cursor
# CFML project
coldbox ai install --cfml
# Force re-install
coldbox ai install --forceInstalled structure:
.ai/
├── guidelines/ # Framework docs (boxlang, coldbox, cborm, cbAuth, etc.)
├── skills/ # On-demand implementation cookbooks
├── manifest.json # Tracks what is installed (version, agents, guidelines, skills, MCP)
CLAUDE.md # (if --aiAgent=claude)
.github/copilot-instructions.md # (if --aiAgent=copilot)
.cursorrules # (if --aiAgent=cursor)
AGENTS.md # (if --aiAgent=codex or opencode)
GEMINI.md # (if --aiAgent=gemini)
Supported agents: claude, copilot, cursor, codex, gemini, opencode
Syncs guidelines and skills from newly installed CommandBox modules:
coldbox ai refreshcoldbox ai info # Show current guidelines, skills, agents, and MCP servers
coldbox ai doctor # Diagnose configuration issues
coldbox ai tree # Tree view of .ai/ directory
coldbox ai stats # AI context character/token usage statscoldbox ai guidelines list
coldbox ai guidelines add cborm
coldbox ai guidelines remove cbormCore guidelines available: boxlang, cfml, coldbox
Module guidelines (40+): bcrypt, cbauth, cborm, testbox, wirebox, and many more
coldbox ai skills list
coldbox ai skills add handler-development
coldbox ai skills remove handler-developmentOver 71 skills are available, covering BoxLang core, ColdBox framework, ORM, security, testing, and modules.
coldbox ai mcp list
coldbox ai mcp add coldbox
coldbox ai mcp remove coldboxOver 30 Ortus MCP documentation servers available (ColdBox, TestBox, WireBox, CacheBox, LogBox, QB, Quick, CBSecurity, and more).
All code templates use |TOKEN| markers that are replaced with generated values. You typically do not interact with templates directly, but knowing the tokens helps you understand what the CLI configures.
| Token | Replaced With |
|---|---|
|handlerName| |
Handler class name |
|modelName| |
Model / entity class name |
|entity| |
Singular entity name |
|entityPlural| |
Plural entity name |
|Description| |
Hint/description string |
|modelDescription| |
Model-level description |
|properties| |
Generated property declarations |
|methods| |
Generated method stubs |
|initContent| |
Constructor body |
|EventActions| |
Expanded action function stubs |
|interceptionPoints| |
Declared interception point list |
|interceptionPoint| |
Single interception point name |
|pk| |
Primary key name |
|appMapping| |
Application mapping string |
|accessors| |
accessors="true" or "" |
|Name| |
Generic name (interceptor, module) |
|action| |
Single action name |
|hint| |
Single action hint |
The CLI automatically detects whether the project uses a modern or flat directory layout and adjusts all generated paths.
| Layout | Indicator | Prefix Used |
|---|---|---|
| Modern | app/handlers/ directory exists |
app/ |
| Flat | No app/ directory |
"" (root) |
Modern layout: Flat layout:
app/ handlers/
handlers/ models/
models/ views/
views/ tests/specs/
tests/specs/
You never need to configure this — detection is automatic.
# 1. Create the app
coldbox create app myAPI skeleton=rest --migrations --docker --ai --aiAgent=copilot
# 2. Create a resource endpoint
coldbox create resource products --api --tests --migration
# 3. Create a service layer
coldbox create service ProductService methods=list,findById,create,update,delete
# 4. Create an authentication interceptor
coldbox create interceptor JWTInterceptor points=preProcess --tests# 1. Create the app
coldbox create app myApp --cfml --migrations
# 2. Scaffold a full ORM-backed resource
coldbox create resource blog/posts \
singularName=Post \
--persistent \
--tests \
--migration \
--seeder
# 3. Generate integration tests for the posts handler
coldbox create integration-test blog/Posts actions=index,show,create,update,delete# From your app root
coldbox ai install --aiAgent=claude,copilot
# After installing new CommandBox modules (e.g., cbsecurity):
coldbox ai refresh
# Check what was installed
coldbox ai info
coldbox ai stats# Create the module
coldbox create module payments author="Acme Corp" description="Payment integrations" version=1.0.0
# Add a handler inside the module
cd modules/payments
coldbox create handler Checkout actions=index,process,confirm --views
# Add a service
coldbox create service PaymentGatewayService methods=charge,refund,void- Always run commands from the application root — the CLI uses the current directory to locate
handlers/,models/,views/, andtests/correctly. - Use
--forcecarefully — it silently overwrites existing files. Omit it to get a confirmation prompt. - Use
--opento immediately open newly created files in your editor. - Combine
--allon model/resource —coldbox create model User --allis the fastest way to get a handler + migration + seeder in one command. coldbox create resourceis the quickest path to a full CRUD feature — it scaffolds handler, model, views/API actions, tests, migration, and seeder in one step.- Use
app-wizardfor new projects — it guides you through language, skeleton, feature selection, and AI setup interactively. - Refresh AI integration after installing new CommandBox modules (
coldbox ai refresh) to pick up module-specific guidelines and skills automatically. - Semicolons are not needed in generated code (BoxLang optional; CFML convention followed by the templates) except on property declarations:
property name="foo" type="string";