bx-docbox — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited bx-docbox (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
install-bx-module bx-docbox
# CommandBox
box install bx-docbox# Basic usage
boxlang module:docbox \
--source=/path/to/source \
--mapping=myapp \
--output-dir=/path/to/docs
# With all options
boxlang module:docbox \
--source=/path/to/source \
--mapping=myapp \
--output-dir=/path/to/docs \
--project-title="My Application API Docs" \
--theme=default \
--excludes=tests,build
# CommandBox (when bx-docbox is installed as a box module)
box docbox generate \
source=./src \
mapping=myapp \
outputDir=./docs/api \
projectTitle="My API"| Format | Strategy Name | Description |
|---|---|---|
| HTML (default SPA) | "HTML" | Single-page app layout, modern theme |
| HTML (frames) | "HTML" with theme:"frames" | Traditional frames layout |
| JSON | "JSON" | Raw JSON metadata export |
| UML / XMI | "UML" | StarUML-compatible XMI output |
// Minimal HTML docs
new docbox.DocBox()
.addStrategy( "HTML", {
outputDir : expandPath( "/app/docs/api" ),
projectTitle : "My Application API"
})
.generate(
source : expandPath( "/app/models" ),
mapping : "app.models"
)new docbox.DocBox()
.addStrategy( "HTML", {
outputDir : expandPath( "/app/docs/api" ),
projectTitle : "My Application API",
theme : "default" // "default" or "frames"
})
.addStrategy( "JSON", {
outputDir : expandPath( "/app/docs/json" ),
projectTitle : "My Application API"
})
.generate(
source : expandPath( "/app" ),
mapping : "app",
excludes : "tests,build,node_modules"
)// Traditional JavaDoc-style frames layout
new docbox.DocBox()
.addStrategy( "HTML", {
outputDir : expandPath( "/app/docs" ),
projectTitle : "My Application API",
theme : "frames"
})
.generate(
source : expandPath( "/app" ),
mapping : "app"
)// Generate StarUML-compatible XMI
new docbox.DocBox()
.addStrategy( "UML", {
outputDir : expandPath( "/app/docs/uml" ),
projectTitle : "My Application UML"
})
.generate(
source : expandPath( "/app/models" ),
mapping : "app.models"
)new docbox.DocBox()
.addStrategy( "HTML", {
outputDir : expandPath( "/app/docs/api" ),
projectTitle : "My Application API"
})
.generate(
source : expandPath( "/app" ),
mapping : "app",
// Comma-separated paths/packages to exclude
excludes : "tests,build,app.helpers.internal,app.legacy"
)// build/DocTask.bx (CommandBox task runner)
component {
function run() {
print.line( "Generating API documentation..." )
new docbox.DocBox()
.addStrategy( "HTML", {
outputDir : expandPath( "../docs/api" ),
projectTitle : "My Framework API"
})
.generate(
source : expandPath( "../src" ),
mapping : "myframework",
excludes : "tests"
)
print.greenLine( "Documentation generated successfully." )
}
}DocBox extracts JavaDoc-style annotations from your BoxLang files:
/**
* User service for managing application users.
*
* @author John Doe
* @since 1.0.0
*/
class UserService {
/**
* Find a user by their ID.
*
* @id The user's unique identifier
* @return The user struct or empty struct if not found
*/
function findById( required numeric id ) {
// ...
}
}mapping must match the dot-notation mapping from your web root to the source directorymapping — use logical component paths (e.g., app.models)expandPath() to resolve source and output directories to absolute OS pathsaddStrategy() calls are fluent — they return the DocBox instance; always call .generate() lastexcludes parameter accepts comma-separated path fragments, not regex patterns~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.