ari-cli-development
Commander.js CLI development patterns for ARI
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Commander.js CLI development patterns for ARI
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Discord slash commands, approval routing, channel policy, button interaction patterns for OpenClaw/ARI Discord integration
Obsidian vault integration patterns โ vault-analyzer.ts, /ari-vault-* commands, morning briefing snippet, PARA structure, read-only enforcement
OpenClaw plugin development patterns โ hooks, manifest structure, plugin SDK, APEX/CODEX enforcement
NOVA's P1 PayThePryce pipeline โ market signal ingest, card detection, price monitoring, script generation, thumbnail generation, video assembly, approval gate
CHASE's P2 Pryceless Solutions pipeline โ lead discovery, 5-criteria audit, LLM qualification, Prompt Forge 4-pass lock, demo generation, outreach approval gate
NOVA's thumbnail generation pipeline โ Ideogram V3 via Fal.ai (primary) + DALL-E 3 fallback, 4-variant strategy, Pokemon TCG copyright rules,
| name | ari-cli-development |
| description | Commander.js CLI development patterns for ARI |
| triggers | ["cli command","add command","commander","ari cli"] |
Develop and maintain ARI's CLI interface using Commander.js.
src/cli/
โโโ index.ts # Main entry, Commander setup
โโโ commands/
โโโ gateway.ts # gateway start/stop
โโโ daemon.ts # daemon management
โโโ audit.ts # audit verify/export
โโโ doctor.ts # system diagnostics
โโโ council.ts # governance commands
โโโ memory.ts # memory operations
โโโ config.ts # configuration
โโโ version.ts # version info
// src/cli/index.ts
#!/usr/bin/env node
import { Command } from 'commander';
import { version } from '../../package.json';
const program = new Command();
program
.name('ari')
.description('ARI - Artificial Reasoning Intelligence CLI')
.version(version);
// Register commands
import './commands/gateway.js';
import './commands/daemon.js';
import './commands/audit.js';
import './commands/doctor.js';
import './commands/council.js';
import './commands/memory.js';
import './commands/config.js';
program.parse();
// src/cli/commands/audit.ts
import { Command } from 'commander';
import { program } from '../index.js';
import { Audit } from '../../kernel/audit.js';
import { logger } from '../../kernel/logger.js';
import chalk from 'chalk';
import ora from 'ora';
const audit = program
.command('audit')
.description('Audit trail operations');
audit
.command('verify')
.description('Verify audit trail integrity')
.action(async () => {
const spinner = ora('Verifying audit chain...').start();
try {
const result = await Audit.verifyChain();
if (result.valid) {
spinner.succeed(chalk.green(
`Audit chain valid (${result.eventCount} events)`
));
} else {
spinner.fail(chalk.red(
`Audit chain INVALID at event ${result.failedAt}`
));
process.exit(1);
}
} catch (error) {
spinner.fail(chalk.red(`Error: ${error.message}`));
process.exit(1);
}
});
audit
.command('export')
.description('Export audit trail')
.option('-o, --output <file>', 'Output file', 'audit-export.json')
.option('-f, --format <format>', 'Format (json|csv)', 'json')
.action(async (options) => {
// Implementation
});
import chalk from 'chalk';
console.log(chalk.green('โ'), 'Operation completed successfully');
console.log(chalk.blue('โน'), 'Information message');
console.log(chalk.yellow('โ '), 'Warning message');
console.log(chalk.red('โ'), 'Error message');
import ora from 'ora';
const spinner = ora('Processing...').start();
// ... operation
spinner.succeed('Done');
// or
spinner.fail('Failed');
console.table([
{ agent: 'guardian', status: 'active', tasks: 12 },
{ agent: 'planner', status: 'active', tasks: 5 },
{ agent: 'executor', status: 'idle', tasks: 0 }
]);
import { input, select, confirm } from '@inquirer/prompts';
audit
.command('cleanup')
.description('Archive old audit events')
.action(async () => {
const age = await select({
message: 'Archive events older than:',
choices: [
{ name: '30 days', value: 30 },
{ name: '60 days', value: 60 },
{ name: '90 days', value: 90 }
]
});
const confirmed = await confirm({
message: `Archive events older than ${age} days?`
});
if (confirmed) {
await archiveOldEvents(age);
}
});
program.exitOverride();
try {
await program.parseAsync();
} catch (error) {
if (error.code === 'commander.help') {
process.exit(0);
}
if (error.code === 'commander.version') {
process.exit(0);
}
logger.error({ error: error.message }, 'CLI error');
console.error(chalk.red('Error:'), error.message);
process.exit(1);
}
| Command | Description |
|---|---|
ari gateway start | Start the gateway server |
ari gateway stop | Stop the gateway server |
ari daemon start | Start as background daemon |
ari daemon status | Check daemon status |
ari audit verify | Verify audit chain integrity |
ari audit export | Export audit trail |
ari doctor | Run system diagnostics |
ari council vote | Cast governance vote |
ari memory stats | Show memory statistics |
ari config get | Get configuration value |
ari config set | Set configuration value |