bx-ini — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited bx-ini (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-ini
# CommandBox
box install bx-ini| BIF | Description |
|---|---|
getIniFile( file ) | Open (or create) an INI file, returns an IniFile object |
getProfileString( iniFile, section, entry ) | Get a single entry value |
setProfileString( iniFile, section, entry, value ) | Set a single entry value |
getProfileSection( iniFile, section ) | Get an entire section as a struct |
getProfileSections( iniFile ) | Get all sections as a struct of structs |
removeProfileSection( iniFile, section ) | Remove an entire section |
removeProfileString( iniFile, section, entry ) | Remove a single entry |
# /app/config/app.ini
[General]
appName=MyApplication
version=1.2.3
debug=false
[Database]
host=localhost
port=5432
dbname=myapp
[Logging]
logLevel=DEBUG
logFile=/var/log/myapp.log// Read individual values
appName = getProfileString( "/app/config/app.ini", "General", "appName" )
host = getProfileString( "/app/config/app.ini", "Database", "host" )
port = getProfileString( "/app/config/app.ini", "Database", "port" )
// If entry doesn't exist, returns empty string
missingValue = getProfileString( "/app/config/app.ini", "General", "nonExistent" )
// Returns ""
// Read entire section as a struct
dbConfig = getProfileSection( "/app/config/app.ini", "Database" )
// { host: "localhost", port: "5432", dbname: "myapp" }
// Read all sections
allConfig = getProfileSections( "/app/config/app.ini" )
// { General: {...}, Database: {...}, Logging: {...} }// Write a single value (creates section + key if not present)
setProfileString( "/app/config/app.ini", "General", "debug", "true" )
// Create a new section and populate it
setProfileString( "/app/config/app.ini", "Cache", "enabled", "true" )
setProfileString( "/app/config/app.ini", "Cache", "ttl", "300" )
setProfileString( "/app/config/app.ini", "Cache", "provider", "redis" )// Get the IniFile object for fluent chaining
var ini = getIniFile( "/app/config/settings.ini" )
// Create a section
ini.createSection( "MySettings" )
// Set entries
ini.setEntry( "MySettings", "timeout", "30" )
ini.setEntry( "MySettings", "retries", "3" )
ini.setEntry( "MySettings", "endpoint", "https://api.example.com" )
// Read entries
timeout = ini.getEntry( "MySettings", "timeout" )
// Remove a single entry
ini.removeEntry( "MySettings", "retries" )
// Remove an entire section
ini.removeSection( "OldSettings" )// Load per-environment config
env = server.system.environment.APP_ENV ?: "development"
config = getProfileSections( "/app/config/#env#.ini" )
// Access config
println( config.Database.host )
println( config.General.appName )val( port )bx-yaml) for hierarchical configgetIniFile() creates the file if it doesn't exist — safe for first-time setupgetProfileString() returns an empty string for missing entries — always check if empty when the value is required~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.