Skills Directory
Reusable, audited skills for BoxLang & the Ortus ecosystem.
Use this skill when implementing caching in BoxLang applications: cache providers, cachePut/cacheGet BIFs, output caching, cache regions, distributed caching with Redis or Couchbase, TTL policies, and distributed locking.
Use this skill for installing, configuring, and upgrading CommandBox CLI: Homebrew install on Mac, apt-get on Linux, Windows install, Java requirements, custom home directory, upgrading CommandBox, light/thin binaries, non-Oracle JRE setup, and first-run configuration.
Use this skill when deploying BoxLang as an enterprise Java servlet application using CommandBox, configuring server.json for BoxLang, installing BoxLang modules, enabling SSL and rewrites, using BoxLang+ or BoxLang++ subscriptions with CommandBox PRO features, and production server configuration.
Use this skill when deploying BoxLang applications: CommandBox server setup, Docker containers, serverless (AWS Lambda, Google Cloud Functions, Azure Functions - see their dedicated runtime-* skills), GitHub Actions CI/CD, BoxLang Version Manager (BVM), boxlang.json runtime config, environment variables, or Spring Boot integration.
Use this skill when working with BoxLang lambdas, closures, arrow functions, higher-order functions, functional array/struct pipelines (map, filter, reduce, flatMap, groupBy, etc.), destructuring, or spread syntax.
Use this skill when writing BoxLang classes, components, interfaces, inheritance hierarchies, annotations, properties, constructors, or applying object-oriented design patterns in BoxLang.
Use this skill when installing, configuring, or using BoxLang modules: box install, boxlang.json module settings, BoxLang+ premium modules (bx-pdf, bx-redis, bx-csv, bx-spreadsheet), CFML compatibility, ORM, mail, and module introspection.
Use this skill when writing BoxLang database code: queryExecute, bx:query, datasource configuration, parameterized queries, transactions, stored procedures, query manipulation, or preventing SQL injection.
Use this skill when writing BoxLang asynchronous code: BoxFuture, futureNew, asyncRun, asyncAll, asyncAny, asyncAllApply, executors, schedulers, thread components, parallel pipelines, file watchers, or distributed locking with bx:lock.
Use this skill when writing or reviewing BoxLang code covering syntax, file types, variables, scopes, operators, control flow, exception handling, type system, and modern language features like destructuring and spread syntax.
Use this skill when creating a BoxLang module: ModuleConfig.bx structure, lifecycle methods (configure/onLoad/onUnload), module metadata, registering interceptors and BIFs, Gradle build setup, publishing to ForgeBox, or using the official module template.
Use this skill when building BoxLang web applications: Application.bx lifecycle, request/response handling, sessions, forms, REST APIs, HTTP clients (including binary and SSE response streaming), routing, CSRF protection, Server-Sent Events, or configuring CommandBox/MiniServer.
Use this skill when working with BoxLang asynchronous programming: BoxFuture (CompletableFuture extension), AsyncService, executor types (VIRTUAL/FIXED/CACHED/SCHEDULED), BaseScheduler, ScheduledTask fluent API, scheduling with cron constraints, task lifecycle callbacks, and registerring schedulers via ModuleConfig.bx.
Use this skill when setting up or developing BoxLang on a Chromebook, including enabling Linux development environment, installing Java 21, installing BoxLang, setting up VS Code with the BoxLang extension, and troubleshooting ARM/Intel Chromebook issues.
Use this skill when creating custom BoxLang components (tags): component file structure, attribute declarations, body/output handling, registering component paths in modules, the difference between components and classes, and testing custom components.
Use this skill when consuming or exposing MCP (Model Context Protocol) servers with bx-ai: the MCP() BIF for HTTP URLs and stdio child processes (MCP( { command: [ ... ] } )), MCPResponse, discovery and tool calls, signing in to OAuth protected MCP servers (withOAuth, startAuthorization, completeAuthorization, per person tokens with subject, token stores, onMCPAuthorizationRequired), giving MCP tools to agents and models (mcpServers, withMCPServer, withMCPServers, prefix, toolFilter, closeMCPServers), stdio lifecycle, restarts, timeouts and security (allowedCommands, commandGuard), client events and stats, creating MCP servers with MCPServer(), and securing them (withRateLimit, withTrustedProxies, withAllowedIPs, withApiKeyProvider, withBasicAuth).
Use this skill when building AI agents with aiAgent(): instructions, custom models, tools, skills (always-on and lazy), MCP servers, memory, fluent configuration, sub-agents and multi-agent hierarchies, streaming, middleware (logging, retry, guardrails, flight recorder), human in the loop approvals with suspend/resume, run control (cancelRun/steerRun), and gateways (aiGateway, aiGatewaySession).
Use this skill when building fluent ORM queries in BoxLang with bx-orm 2.x entityCriteria(): conditions (isEq, like, between, isIn, isNull, not* forms), anyOf/allOf groups, c.restrictions, joins and aliases (joinTo/createAlias, withClause, with{Association}), fetch, subqueries, projections, asStruct/asQuery/asStream results, resultTransformer, ordering, paging, terminals (list, get, count, paginate, each, chunk), bulk updateAll/deleteAll, row locking, and inspecting SQL with getSQL().
Use this skill when monitoring or debugging bx-orm 2.x activity in BoxLang: the onORMQuery, onORMFlush and onORMException interception points, slow SQL and bound parameters, config-load, post_new and criteria interception points, Hibernate statistics via ORMService.getStatistics, orm.log SQL and startup metrics, ormDiagnostics(), ormGetSessionStatistics() and orm.* error types.
Use this skill when defining relationships between BoxLang ORM entities (bx-orm 2.x, Hibernate 7.4): one-to-one, one-to-many, many-to-one, many-to-many, fkcolumn, linktable, inversejoincolumn, inverse and mappedBy, lazy and fetch, cascade options, singularName and the generated has/add/remove methods, orderBy and where on collections, struct-keyed collections, value collections (fieldtype=collection), batch size and collection caching.
Use this skill when querying ORM entities in BoxLang with bx-orm: entityLoad(), entityLoadByPK(), entityLoadByExample(), the OrFail/OrNew/OrSave and read-only loaders, ormExecuteQuery() and HQL parameters and options, HQL through bx:query dbtype=\"hql\" and queryExecute(), unique results, pagination, streaming, query caching and eviction, entityToQuery(), and entity lifecycle BIFs (entityNew, entitySave, entityDelete, entityMerge, entityReload).
Use this skill when configuring bx-orm 2.x (Hibernate 7.4) in BoxLang: Application.bx ormSettings, enabling the ORM, datasources, dbcreate options, Hibernate 7 dialects, entity paths, naming strategies, raw Hibernate properties, named SQL functions, event handling, session settings, the BoxCache-backed second-level cache, the .bxorm boot cache (ormManifest auto/trust) and the boxlang module:orm CLI (generate, info, validate, entities, clear).
Use this skill for bx-orm 2.x (Hibernate 7.4) transactions and session flushing in BoxLang: how ORM work rides the transaction{} connection, mixing entitySave() and queryExecute() in one commit/rollback, transactionCommit(), transactionRollback(), what a rollback does to the ORM session, savepoint limits, nested transactions and enableNestedTransactions, isolation levels, multi-datasource transactions, locking, postCommit, ORMFlush(), ORMClearSession(), ORM writes outside a transaction block, autoManageSession/flushAtRequestEnd, and how 1.x differed.
Use this skill when defining BoxLang ORM entities (bx-orm 2.x, Hibernate 7.4): the persistent/entity annotation, entity names, table mapping, entity where filters, defaultSort, soft delete, property annotations, fieldtype, ormType, identifiers and generators, unsavedValue, composite keys, version fields, autoTimestamp, inheritance and mappedSuperClass, static entity methods (User::get()), and this.memento for entityToStruct().