From boxlang-agent-skills
Use this skill when designing or debugging Application.bx behavior: app discovery and nesting, multi-application isolation, lifecycle events, pseudo-constructor settings, session management, mappings/javaSettings resolution, and app-scoped schedulers/watchers via this.schedulers and this.watchers.
How this skill is triggered — by the user, by Claude, or both
Slash command
/boxlang-agent-skills:application-descriptorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
`Application.bx` is BoxLang's application descriptor. It defines application-level settings and lifecycle callbacks, and it is the cornerstone for running multiple isolated applications in one BoxLang server/runtime.
Application.bx is BoxLang's application descriptor. It defines application-level settings and lifecycle callbacks, and it is the cornerstone for running multiple isolated applications in one BoxLang server/runtime.
Use this skill whenever the question involves:
this.*boxlang.json) and app config (Application.bx)Application.bx.Application.bx is instantiated per request/execution context.application scope is persistent for that app name and survives across requests until timeout/stop.Each unique this.name maps to a unique application memory space:
application scopeThis enables running multiple apps side-by-side (public site, admin site, API site) in a single server process.
class {
this.name = "MyApp"
}
Best practices:
this.name explicitly.If no name is provided, runtime may auto-generate one from the descriptor path for class listeners, which is usually not what you want in production.
Primary callbacks in Application.bx:
onApplicationStart()onApplicationEnd( applicationScope )onSessionStart()onSessionEnd( sessionScope, applicationScope )onRequestStart( targetPage )onRequest( targetPage )onRequestEnd()onError( exception, eventName )onMissingTemplate( targetPage )onAbort( targetPage )onClassRequest( className, method, args )class {
this.name = "MyApp"
this.sessionManagement = true
function onApplicationStart() {
application.bootedAt = now()
return true
}
function onRequestStart( string targetPage ) {
request.started = getTickCount()
return true
}
function onError( any exception, string eventName ) {
writeLog( text: "Error in #eventName#: #exception.message#", type: "Error" )
return true
}
}
Common this.* settings in Application.bx include:
this.name, this.applicationTimeout, this.timezone, this.localethis.sessionManagement, this.sessionTimeout, this.sessionStoragethis.datasource, this.datasources, this.cachesthis.mappings, this.classPaths, this.javaSettingsthis.schedulers, this.watchersApplication.bx can wire async infrastructure per app:
class {
this.name = "MyApp"
this.schedulers = [
"schedulers.DailyMaintenance",
"schedulers.HourlyReports"
]
this.watchers = {
sourceWatcher : {
paths : [ expandPath( "./src" ) ],
listener : "app.listeners.HotReloadListener",
recursive : true,
debounce : 250,
atomicWrites : true,
errorThreshold : 10
}
}
}
For deeper async details, see:
boxlang.json for runtime-wide defaults and infrastructure settings.Application.bx for app-specific behavior and overrides.Rule of thumb:
boxlang.jsonApplication.bxApplication.bx is being discovered by directory traversal.this.sessionManagement = true and web runtime context.this.applicationTimeout and applicationStop() usage.this.schedulers / this.watchers values and listener/class paths.npx claudepluginhub ortus-boxlang/skills --plugin boxlang-agent-skillsProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.