with one click
add-backend
Scaffold a new LLM backend for multi-bark-pack
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
Scaffold a new LLM backend for multi-bark-pack
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
Create distinctive, production-grade frontend interfaces with high design quality
Software architect mode - focus on system design, patterns, scalability, and technical decisions
Debug mode - systematic debugging with hypothesis-driven investigation
Senior developer mode - focus on implementation, code quality, testing, and debugging
Product manager mode - focus on user experience, requirements, priorities, and value delivery
Code reviewer mode - thorough code review with focus on bugs, security, and maintainability
| name | add-backend |
| description | Scaffold a new LLM backend for multi-bark-pack |
| user-invocable | true |
Scaffold a new LLM agent backend for multi-bark-pack.
/add-backend cursor
/add-backend codex
/add-backend <backend-name>
Create backends/<name>.js:
/**
* <Name> CLI Backend
*/
const { execSync } = require('child_process');
const crypto = require('crypto');
const EXEC_OPTS = { encoding: 'utf8', timeout: 5000 };
module.exports = function create<Name>Backend(config = {}) {
return {
name: '<name>',
displayName: '<Display Name>',
async isInstalled() {
try {
execSync('which <cli-command>', EXEC_OPTS);
return true;
} catch {
return false;
}
},
async getVersion() {
try {
const output = execSync('<cli-command> --version', EXEC_OPTS);
return output.trim();
} catch {
return null;
}
},
models: ['model1', 'model2'],
defaultModel: 'model1',
validateModel(model) {
return this.models.includes(model);
},
canResume: true,
generateSessionId() {
return crypto.randomUUID();
},
buildCommand(opts) {
const { promptFile, sessionId, isResume, model, systemPromptFile, streamParserScript, agentId, tmpDir } = opts;
// Build CLI-specific command
let script = '#!/bin/bash\n';
script += `# TODO: Implement <name> CLI invocation\n`;
return { script, env: {} };
},
streamParserName: '<name>',
extractSessionId(output) {
return null;
},
capabilities: {
streaming: true,
sessionPersistence: true,
workingDirectory: true,
forceMode: true,
systemPrompt: true,
planning: true,
},
};
};
Create stream-parsers/<name>.js:
/**
* <Name> stream parser
*/
const TOOL_ICONS = {
// Map tool names to icons
};
module.exports = {
name: '<name>',
toolIcons: TOOL_ICONS,
parseLine(line) {
// Parse CLI output format
// Return: { type: 'text'|'tool'|'result', ... }
},
getToolIcon(name) {
return TOOL_ICONS[name] || '🔧';
},
};
In backends/index.js, add:
const create<Name>Backend = require('./<name>');
const backendFactories = {
'claude-code': createClaudeCodeBackend,
'<name>': create<Name>Backend, // Add this
};
In stream-parsers/index.js, add:
const <name>Parser = require('./<name>');
const parsers = {
claude: claudeParser,
'<name>': <name>Parser, // Add this
};
In .env.example, add:
ENABLED_BACKENDS=claude-code,<name>
node server.js
# In chat: /backends (should show new backend)
# Spawn a pup with new backend (once implemented)
backends/<name>.jsstream-parsers/<name>.jsbackends/index.jsstream-parsers/index.js