aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
149 lines • 4.8 kB
JavaScript
/**
* Scaffolding Command Handlers
*
* Handlers for code generation and project scaffolding commands.
* Each handler delegates to existing scripts in tools/scaffolding/.
*
* @implements @.aiwg/architecture/decisions/ADR-001-unified-extension-system.md
* @tests @test/unit/cli/handlers/scaffolding.test.ts
* @issue #33
*/
import { createScriptRunner } from './script-runner.js';
import { getFrameworkRoot } from '../../channel/manager.mjs';
/**
* Base class for scaffolding handlers that delegate to scripts
*/
class ScaffoldingHandler {
category = 'scaffolding';
get aliases() {
return [this.id];
}
async execute(ctx) {
const frameworkRoot = await getFrameworkRoot();
const runner = createScriptRunner(frameworkRoot);
return runner.run(this.scriptPath, ctx.args);
}
}
/**
* Add Agent Handler
*
* Scaffolds a new agent definition (specialist AI persona).
*/
class AddAgentHandler extends ScaffoldingHandler {
id = 'add-agent';
name = 'Add Agent';
description = 'Create a new agent definition';
scriptPath = 'tools/scaffolding/add-agent.mjs';
}
/**
* Add Command Handler
*
* Scaffolds a new slash command for Claude Code/Cursor.
*
* @deprecated Use `aiwg add-skill` instead. Commands are now generated from
* skills at deploy time. See ADR: Skills as Canonical Extension Type.
*/
class AddCommandHandler extends ScaffoldingHandler {
id = 'add-command';
name = 'Add Command';
description = 'Create a new slash command (deprecated — use add-skill)';
scriptPath = 'tools/scaffolding/add-command.mjs';
async execute(ctx) {
console.warn('\x1b[33m⚠ DEPRECATED:\x1b[0m `aiwg add-command` is deprecated. ' +
'Use `aiwg add-skill` instead.\n' +
' Commands are now generated from skills at deploy time.\n' +
' See: .aiwg/architecture/adr-skills-canonical-extension-type.md\n');
return super.execute(ctx);
}
}
/**
* Add Skill Handler
*
* Scaffolds a new skill (SKILL.md format) — the canonical extension type for workflows.
*/
class AddSkillHandler extends ScaffoldingHandler {
id = 'add-skill';
name = 'Add Skill';
description = 'Create a new skill (canonical workflow format)';
scriptPath = 'tools/scaffolding/add-skill.mjs';
}
/**
* Add Template Handler
*
* Scaffolds a new document template.
*/
class AddTemplateHandler extends ScaffoldingHandler {
id = 'add-template';
name = 'Add Template';
description = 'Create a new document template';
scriptPath = 'tools/scaffolding/add-template.mjs';
}
/**
* Scaffold Addon Handler
*
* Scaffolds a complete AIWG addon with structure and manifest.
*/
class ScaffoldAddonHandler extends ScaffoldingHandler {
id = 'scaffold-addon';
name = 'Scaffold Addon';
description = 'Create a new AIWG addon';
scriptPath = 'tools/scaffolding/scaffold-addon.mjs';
}
/**
* Scaffold Extension Handler
*
* Scaffolds a platform-specific extension (plugin, integration).
*/
class ScaffoldExtensionHandler extends ScaffoldingHandler {
id = 'scaffold-extension';
name = 'Scaffold Extension';
description = 'Create a new platform extension';
scriptPath = 'tools/scaffolding/scaffold-extension.mjs';
}
/**
* Add Behavior Handler
*
* Scaffolds a new behavior with BEHAVIOR.md and scripts/.
*/
class AddBehaviorHandler extends ScaffoldingHandler {
id = 'add-behavior';
name = 'Add Behavior';
description = 'Create a new behavior with hooks and scripts';
scriptPath = 'tools/scaffolding/add-behavior.mjs';
}
/**
* Scaffold Framework Handler
*
* Scaffolds a complete AIWG framework with agents, commands, and docs.
*/
class ScaffoldFrameworkHandler extends ScaffoldingHandler {
id = 'scaffold-framework';
name = 'Scaffold Framework';
description = 'Create a new AIWG framework';
scriptPath = 'tools/scaffolding/scaffold-framework.mjs';
}
/**
* Exported handler instances
*/
export const addAgentHandler = new AddAgentHandler();
export const addCommandHandler = new AddCommandHandler();
export const addSkillHandler = new AddSkillHandler();
export const addBehaviorHandler = new AddBehaviorHandler();
export const addTemplateHandler = new AddTemplateHandler();
export const scaffoldAddonHandler = new ScaffoldAddonHandler();
export const scaffoldExtensionHandler = new ScaffoldExtensionHandler();
export const scaffoldFrameworkHandler = new ScaffoldFrameworkHandler();
/**
* All scaffolding handlers for registration
*/
export const scaffoldingHandlers = [
addAgentHandler,
addCommandHandler,
addSkillHandler,
addBehaviorHandler,
addTemplateHandler,
scaffoldAddonHandler,
scaffoldExtensionHandler,
scaffoldFrameworkHandler,
];
//# sourceMappingURL=scaffolding.js.map