UNPKG

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

1,586 lines 102 kB
/** * Command Extension Definitions * * Defines Extension objects for all CLI commands. Maps command handlers to the * unified Extension schema for discovery, semantic search, and help generation. * * @implements @.aiwg/architecture/decisions/ADR-001-unified-extension-system.md * @architecture @.aiwg/architecture/unified-extension-schema.md * @source @src/cli/handlers/index.ts * @tests @test/unit/extensions/commands/definitions.test.ts * @issue #42 */ // ============================================ // Individual Command Definitions // ============================================ // Maintenance Commands export const helpCommand = { id: 'help', type: 'skill', name: 'Help', description: 'Show all CLI commands, arguments, and usage examples', version: '1.0.0', capabilities: ['cli', 'help', 'documentation'], keywords: ['help', 'usage', 'commands', 'documentation'], category: 'maintenance', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['help', 'show commands', 'usage', 'what commands are available'], commandHint: { template: 'utility', allowedTools: [], }, }, }; export const versionCommand = { id: 'version', type: 'skill', name: 'Version', description: 'Show version and channel information', version: '1.0.0', capabilities: ['cli', 'version', 'info'], keywords: ['version', 'info', 'channel'], category: 'maintenance', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['version', 'what version', 'show version', 'current version'], commandHint: { template: 'utility', allowedTools: ['Read'], }, }, }; export const doctorCommand = { id: 'doctor', type: 'skill', name: 'Doctor', description: 'Check installation health and diagnose issues', version: '1.0.0', capabilities: ['cli', 'diagnostics', 'health-check'], keywords: ['doctor', 'health', 'diagnostics', 'troubleshooting'], category: 'maintenance', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['doctor', 'check health', 'diagnose', 'troubleshoot installation'], commandHint: { template: 'utility', allowedTools: ['Read', 'Bash'], }, }, }; export const updateCommand = { id: 'update', type: 'skill', name: 'Update', description: 'Update AIWG and re-deploy installed frameworks from registry', version: '1.0.0', capabilities: ['cli', 'update', 'maintenance', 'deploy', 'refresh'], keywords: ['update', 'upgrade', 'maintenance', 'refresh', 'redeploy'], category: 'maintenance', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['update', 'upgrade aiwg', 'update aiwg', 'refresh frameworks'], commandHint: { template: 'utility', allowedTools: ['Bash', 'Read'], argumentHint: '[--all] [--dry-run] [--provider <name>] [--skip-check]', executionSteps: [ 'Check for npm/git updates', 'Read .aiwg/frameworks/registry.json', 'Re-deploy installed frameworks', 'Report update summary', ], }, }, }; // Renamed from `refreshCommand` as part of #694 (avoid collision with git sync // semantics) and re-linked to `refreshHandler` in #919. Users who type // `aiwg sync` still reach this handler via its 'sync' alias and see a // deprecation notice. export const refreshCommand = { id: 'refresh', type: 'skill', name: 'Refresh', description: 'Refresh AIWG to latest version and re-deploy all frameworks to active provider (formerly: sync)', version: '1.0.0', capabilities: ['cli', 'refresh', 'sync', 'maintenance', 'deploy', 'self-maintenance'], keywords: ['refresh', 'sync', 'update', 'redeploy', 'current', 'latest'], category: 'maintenance', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['sync', 'sync aiwg', 'sync to latest', 'redeploy frameworks'], commandHint: { template: 'utility', allowedTools: ['Bash', 'Read'], argumentHint: '[--provider <name>] [--dry-run] [--frameworks <list>] [--channel <stable|next>] [--skip-update] [--quiet]', executionSteps: [ 'Detect active provider via runtime-info', 'Check current version vs latest on channel', 'Update package if newer available', 'Re-deploy all installed frameworks to provider', 'Run doctor health check', 'Output sync summary', ], }, }, }; // #1266 — Regenerate cross-provider context files (AIWG.md + AGENTS.md) without // redeploying frameworks. Narrower than refresh; faster for context-drift fixes. export const regenerateCommand = { id: 'regenerate', type: 'skill', name: 'Regenerate Context Files', description: 'Regenerate AIWG.md + AGENTS.md without redeploying frameworks (context-only)', version: '1.0.0', capabilities: ['cli', 'regenerate', 'context', 'maintenance', 'self-maintenance'], keywords: ['regenerate', 'context', 'aiwg.md', 'agents.md', 'redeploy-context'], category: 'maintenance', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['regenerate context', 'rewrite AIWG.md', 'rewrite AGENTS.md', 'fix context files'], commandHint: { template: 'utility', allowedTools: ['Bash', 'Read', 'Write'], argumentHint: '[--provider <name>] [--dry-run] [--force] [--no-aiwg-md] [--no-agents-md]', executionSteps: [ 'Detect active provider (or accept --provider override)', 'Discover deployed artifacts under provider paths', 'Regenerate AIWG.md from CLAUDE.md template (or stub if absent)', 'Regenerate AGENTS.md link-index sections', 'Report which files were written, skipped, or backed up', ], }, }, }; // Framework Management Commands export const useCommand = { id: 'use', type: 'skill', name: 'Use', description: 'Deploy SDLC, marketing, or writing framework (or addon) to workspace', version: '1.0.0', capabilities: ['cli', 'framework', 'deployment', 'addon'], keywords: ['framework', 'install', 'deploy', 'use', 'addon', 'rlm'], category: 'framework', platforms: { claude: 'full', copilot: 'full', factory: 'full', cursor: 'full', windsurf: 'full', openclaw: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['use framework', 'deploy framework', 'install framework', 'use sdlc', 'use addon'], commandHint: { template: 'orchestration', argumentHint: '<framework|addon> [--provider <p>] [--prefix <dir>] [--profile <name>]', allowedTools: ['Read', 'Write', 'Bash', 'Glob'], executionSteps: [ 'Validate framework name', 'Check dependencies', 'Deploy framework files', 'Register in framework registry', 'Deploy platform-specific adaptations', ], }, }, }; export const listCommand = { id: 'list', type: 'skill', name: 'List', description: 'List installed frameworks and addons', version: '1.0.0', capabilities: ['cli', 'framework', 'query'], keywords: ['list', 'frameworks', 'addons', 'installed'], category: 'framework', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['list frameworks', 'show installed', 'list addons', 'what is installed'], commandHint: { template: 'utility', allowedTools: ['Read'], }, }, }; export const removeCommand = { id: 'remove', type: 'skill', name: 'Remove', description: 'Remove a framework or addon', version: '1.0.0', capabilities: ['cli', 'framework', 'uninstall'], keywords: ['remove', 'uninstall', 'framework', 'addon'], category: 'framework', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['remove framework', 'uninstall framework', 'remove addon', 'uninstall addon'], commandHint: { template: 'orchestration', argumentHint: '<id>', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; export const newBundleCommand = { id: 'new-bundle', type: 'skill', name: 'New Bundle', description: 'Scaffold a project-local bundle under .aiwg/{type}/{name}/', version: '1.0.0', capabilities: ['cli', 'scaffolding', 'project-local'], keywords: ['new', 'bundle', 'scaffold', 'project-local', 'extension', 'addon', 'framework', 'plugin'], category: 'scaffolding', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['new bundle', 'scaffold project-local', 'new extension', 'new addon'], commandHint: { template: 'utility', argumentHint: '<name> [--type extension|addon|framework|plugin] [--starter skill|rule|agent|minimal] [--description "..."]', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; export const promoteCommand = { id: 'promote', type: 'skill', name: 'Promote', description: 'Graduate a project-local bundle to upstream or a corpus path', version: '1.0.0', capabilities: ['cli', 'framework', 'graduate', 'project-local'], keywords: ['promote', 'graduate', 'upstream', 'corpus', 'project-local', 'bundle'], category: 'framework', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['promote bundle', 'graduate to upstream', 'promote project-local'], commandHint: { template: 'orchestration', argumentHint: '<name> [--to upstream|corpus <path>] [--dry-run] [--cleanup] [--force]', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; export const installCommand = { id: 'install', type: 'skill', name: 'Install Package', description: 'Install a framework, addon, or extension from a Git repository', version: '1.0.0', capabilities: ['cli', 'framework', 'install', 'git'], keywords: ['install', 'package', 'git', 'remote', 'addon', 'framework'], category: 'framework', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['install package', 'install addon from git', 'install remote package'], commandHint: { template: 'orchestration', argumentHint: '<ref>', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; export const packagesCommand = { id: 'packages', type: 'skill', name: 'Packages', description: 'Manage installed remote packages (list, info, remove)', version: '1.0.0', capabilities: ['cli', 'framework', 'query', 'uninstall'], keywords: ['packages', 'list', 'installed', 'remote', 'registry'], category: 'framework', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['list packages', 'show packages', 'package info', 'remove package'], commandHint: { template: 'utility', argumentHint: '[list|info|remove]', allowedTools: ['Read'], }, }, }; export const marketplaceCommand = { id: 'marketplace', type: 'skill', name: 'Marketplace', description: 'Search and manage marketplace packages (search, list)', version: '1.0.0', capabilities: ['cli', 'marketplace', 'search', 'discovery'], keywords: ['marketplace', 'search', 'packages', 'clawhub', 'openclaw', 'discover'], category: 'framework', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: [ 'marketplace search', 'search marketplace', 'marketplace list', 'find packages', 'discover skills', ], commandHint: { template: 'utility', argumentHint: '[search|list]', allowedTools: ['Read'], }, }, }; export const initCommand = { id: 'init', type: 'skill', name: 'Init', description: 'Initialise project with .aiwg/aiwg.config (provider registry + scripts)', version: '1.0.0', capabilities: ['cli', 'project', 'config', 'setup'], keywords: ['init', 'setup', 'config', 'providers', 'wizard'], category: 'project', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['init project', 'setup project config', 'configure providers'], commandHint: { template: 'utility', allowedTools: ['Read', 'Write'], }, }, }; export const runCommand = { id: 'run', type: 'skill', name: 'Run Script or Skill', description: 'Run a user-defined script from .aiwg/aiwg.config, or execute a script-bearing skill via `aiwg run skill <name>` (#1227)', version: '1.1.0', capabilities: ['cli', 'utility', 'scripts', 'skills'], keywords: ['run', 'script', 'execute', 'npm-run', 'skill'], category: 'utility', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['run script', 'aiwg run', 'list scripts', 'run skill', 'aiwg run skill'], commandHint: { template: 'utility', argumentHint: '[script-name] | skill <name> [-- <args...>]', allowedTools: ['Read', 'Bash'], }, }, }; // Project Setup Commands export const newCommand = { id: 'new', type: 'skill', name: 'New Project', description: 'Scaffold new project with .aiwg/ directory and templates', version: '1.0.0', capabilities: ['cli', 'project', 'scaffolding'], keywords: ['new', 'project', 'create', 'init', 'scaffold'], category: 'project', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['new project', 'create project', 'init project', 'scaffold project'], commandHint: { template: 'orchestration', allowedTools: ['Read', 'Write', 'Bash'], executionSteps: [ 'Create .aiwg/ directory structure', 'Deploy SDLC templates', 'Deploy agents', 'Initialize framework registry', ], }, }, }; // Serve Command export const serveCommand = { id: 'serve', type: 'skill', name: 'Serve', description: 'Start local HTTP dashboard server with WebSocket PTY bridge', version: '1.0.0', capabilities: ['cli', 'web', 'dashboard'], keywords: ['serve', 'dashboard', 'web', 'server', 'browser'], category: 'project', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['serve dashboard', 'start server', 'open dashboard', 'aiwg serve'], commandHint: { template: 'utility', argumentHint: '[--port <n>] [--bind <host>] [--no-open] [--read-only]', allowedTools: ['Bash'], }, }, }; // Local Executor Command (#1181) export const localExecutorCommand = { id: 'local-executor', type: 'skill', name: 'Local Executor', description: 'Start a no-sandbox host-process executor (isolation:none, Core+HITL conformance) registered with aiwg serve', version: '1.0.0', capabilities: ['cli', 'executor', 'missions', 'hitl'], keywords: ['local-executor', 'executor', 'missions', 'dispatch', 'hitl', 'no-sandbox'], category: 'project', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: false, }, metadata: { type: 'skill', triggerPhrases: [ 'local executor', 'start executor', 'aiwg local-executor serve', 'no-sandbox executor', ], commandHint: { template: 'utility', argumentHint: 'serve [--port <n>] [--bind <host>] [--aiwg-serve <url>] [--max-concurrency <n>] [--executor-id <uuid>]', allowedTools: ['Bash'], }, }, }; export const localExecutorServeCommand = { id: 'local-executor-serve', type: 'skill', name: 'Local Executor Serve', description: 'Serve subcommand for the local executor — boots DaemonSupervisor + ExecutorShim and registers with aiwg serve', version: '1.0.0', capabilities: ['cli', 'executor', 'serve'], keywords: ['local-executor-serve', 'executor', 'serve'], category: 'project', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: false, }, metadata: { type: 'skill', triggerPhrases: ['aiwg local-executor serve'], commandHint: { template: 'utility', argumentHint: '[--port <n>] [--bind <host>] [--aiwg-serve <url>] [--max-concurrency <n>]', allowedTools: ['Bash'], }, }, }; // Diagnose Command (#925) export const diagnoseCommand = { id: 'diagnose', type: 'skill', name: 'Diagnose', description: 'Produce a shareable support bundle (logs + env + config) for bug reports', version: '1.0.0', capabilities: ['cli', 'diagnostics', 'troubleshooting', 'support', 'bundle'], keywords: ['diagnose', 'troubleshoot', 'bundle', 'support', 'bug-report', 'logs'], category: 'maintenance', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['diagnose', 'collect logs', 'bug report', 'support bundle', 'what is wrong'], commandHint: { template: 'utility', argumentHint: '[--stdout] [--include-secrets]', allowedTools: ['Bash'], }, }, }; // Feedback Command (#885) export const feedbackCommand = { id: 'feedback', type: 'skill', name: 'Feedback', description: 'Submit a bug report, feature request, or doc gap to the AIWG GitHub repo (auto-prefilled with system context)', version: '1.0.0', capabilities: ['cli', 'feedback', 'bug-report', 'feature-request', 'github-integration'], keywords: ['feedback', 'bug', 'report', 'issue', 'feature-request', 'gh', 'github'], category: 'maintenance', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['report a bug', 'feature request', 'submit feedback', 'file an issue'], commandHint: { template: 'utility', argumentHint: '[--type bug|feature|doc] [--title T --body B] [--no-context]', allowedTools: ['Bash'], }, }, }; // Session Command (#884) export const sessionCommand = { id: 'session', type: 'skill', name: 'Session', description: 'Start an agentic session with pre-flight checks (version, doctor, deployment, optional MCP inject) and provider launch', version: '1.0.0', capabilities: ['cli', 'session', 'pre-flight', 'provider-launch', 'mcp-inject'], keywords: ['session', 'start', 'launch', 'pre-flight', 'mcp', 'provider'], category: 'project', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['start session', 'launch session', 'session mcp', 'agentic session'], commandHint: { template: 'utility', argumentHint: '[mcp] [--provider P] [--no-repair] [--profile name]', allowedTools: ['Bash'], }, }, }; // Sandbox Management Commands (#917) export const sandboxCommand = { id: 'sandbox', type: 'skill', name: 'Sandbox', description: 'Sandbox agent management — alias, resolve, and list agent identities', version: '1.0.0', capabilities: ['cli', 'sandbox', 'agent-identity', 'agent-routing'], keywords: ['sandbox', 'alias', 'agent', 'identity', 'resolve', 'logical-name'], category: 'project', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['sandbox alias', 'alias agent', 'sandbox resolve', 'agent identities'], commandHint: { template: 'utility', argumentHint: 'alias|resolve|identities [options]', allowedTools: ['Bash'], }, }, }; // Workspace Management Commands export const statusCommand = { id: 'status', type: 'skill', name: 'Status', description: 'Show workspace health, installed frameworks, and artifacts', version: '1.0.0', capabilities: ['cli', 'workspace', 'status'], keywords: ['status', 'workspace', 'health', 'info'], category: 'workspace', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['status', 'workspace status', 'show health', 'project status'], commandHint: { template: 'utility', allowedTools: ['Read', 'Bash'], }, }, }; export const wizardCommand = { id: 'wizard', type: 'skill', name: 'Onboarding Wizard', description: 'Guide first-run provider, project, framework, deploy, and verification steps', version: '1.0.0', capabilities: ['cli', 'workspace', 'onboarding', 'wizard', 'verification'], keywords: ['wizard', 'onboarding', 'first-run', 'setup', 'verify'], category: 'workspace', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['wizard', 'onboarding wizard', 'first run', 'guided setup'], commandHint: { template: 'utility', argumentHint: '[--goal <text>] [--profile <preset>] [--provider <name>] [--framework <name>] [--non-interactive] [--dry-run] [--json]', allowedTools: ['Read', 'Bash'], }, }, }; export const migrateWorkspaceCommand = { id: 'migrate-workspace', type: 'skill', name: 'Migrate Workspace', description: 'Upgrade .aiwg/ structure to support multi-framework layout', version: '1.0.0', capabilities: ['cli', 'workspace', 'migration'], keywords: ['migrate', 'workspace', 'migration', 'upgrade'], category: 'workspace', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['migrate workspace', 'upgrade workspace', 'migrate aiwg directory'], commandHint: { template: 'orchestration', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; export const rollbackWorkspaceCommand = { id: 'rollback-workspace', type: 'skill', name: 'Rollback Workspace', description: 'Restore workspace to pre-migration state from backup', version: '1.0.0', capabilities: ['cli', 'workspace', 'rollback'], keywords: ['rollback', 'workspace', 'restore', 'backup'], category: 'workspace', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['rollback workspace', 'restore workspace', 'undo migration', 'workspace backup'], commandHint: { template: 'orchestration', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; // MCP Commands export const mcpCommand = { id: 'aiwg-mcp-server', type: 'skill', name: 'AIWG MCP Server', description: 'AIWG MCP server operations (serve, install, add, remove, update, list, inject, info)', version: '1.0.0', capabilities: ['cli', 'mcp', 'server'], keywords: ['mcp', 'server', 'protocol', 'aiwg'], category: 'mcp', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['aiwg mcp', 'aiwg mcp server', 'start aiwg mcp', 'aiwg mcp serve', 'aiwg mcp install'], commandHint: { template: 'orchestration', argumentHint: '<subcommand>', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; // Catalog Commands export const catalogCommand = { id: 'catalog', type: 'skill', name: 'Catalog', description: 'Model catalog operations (list, info, search)', version: '1.0.0', capabilities: ['cli', 'catalog', 'models'], keywords: ['catalog', 'models', 'search', 'info'], category: 'catalog', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['catalog', 'model catalog', 'list models', 'search catalog'], commandHint: { template: 'utility', argumentHint: '<subcommand>', allowedTools: ['Read'], }, }, }; // Skills Commands export const skillsCommand = { id: 'skills', type: 'skill', name: 'Skills Registry', description: 'Skill registry commands (search, info, list, install, publish)', version: '1.0.0', capabilities: ['cli', 'skills', 'registry', 'search', 'install', 'publish'], keywords: ['skills', 'registry', 'search', 'install', 'publish', 'clawhub', 'openclaw'], category: 'catalog', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['skills', 'skills registry', 'search skills', 'install skill', 'publish skill'], commandHint: { template: 'utility', argumentHint: '<subcommand>', allowedTools: ['Read', 'Bash'], }, }, }; // Index Commands export const indexCommand = { id: 'index', type: 'skill', name: 'Artifact Index', description: 'Artifact index commands (build, query, deps, stats)', version: '1.0.0', capabilities: ['cli', 'index', 'artifacts', 'search', 'dependencies'], keywords: ['index', 'artifacts', 'query', 'deps', 'dependencies', 'stats', 'search'], category: 'index', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['index', 'build index', 'query index', 'artifact index', 'index stats'], commandHint: { template: 'utility', argumentHint: '<subcommand> [options]', allowedTools: ['Read', 'Glob', 'Grep'], }, }, }; // Discovery — first-class top-level verb (#1212) // // Discovery is the operator surface for finding AIWG skills, agents, commands, // and rules by capability. It heavily leverages the artifact index machinery // but is exposed as its own top-level command (`aiwg discover`) rather than a // subcommand of `aiwg index` to avoid agentic confusion between the project's // general-purpose graph indices (project / codebase / framework / user-defined) // and the specific AIWG capability-search surface. export const discoverCommand = { id: 'discover', type: 'skill', name: 'Discover', description: 'Find AIWG skills, agents, commands, and rules by capability — index-driven on-demand discovery', version: '1.0.0', capabilities: ['cli', 'discovery', 'search', 'capability', 'skills'], keywords: ['discover', 'find skill', 'capability', 'search skills', 'what skill does', 'skill for'], category: 'index', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: [ 'discover', 'find a skill', 'find skill for', 'what skill handles', 'capability search', 'aiwg discover', ], commandHint: { template: 'utility', argumentHint: '"<phrase>" [--limit N] [--type skill,agent,...] [--json]', allowedTools: ['Read'], }, }, }; // Show: companion to `discover`. Where `discover` ranks candidates, // `show` fetches the full body of one specific artifact (#1218). This // closes the loop so consumers never need to navigate AIWG's storage // paths themselves — the CLI is the access point. export const showCommand = { id: 'show', type: 'skill', name: 'Show', description: 'Print the full text of a specific AIWG skill, agent, command, or rule by name', version: '1.0.0', capabilities: ['cli', 'discovery', 'read', 'capability', 'skills'], keywords: ['show', 'cat', 'read skill', 'print skill', 'get skill content', 'aiwg show'], category: 'index', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: [ 'show skill', 'print skill', 'read skill', 'get skill content', 'aiwg show', ], commandHint: { template: 'utility', argumentHint: '<type> <name> [--json] [--first] # type: skill | agent | command | rule', allowedTools: ['Read'], }, }, }; // Features: list, inspect (and eventually install) AIWG's optional // runtime features — embeddings, sqlite, pty, webserver. (#1219) export const featuresCommand = { id: 'features', type: 'skill', name: 'Features', description: 'List, inspect, and (eventually) install AIWG\'s optional runtime features', version: '1.0.0', capabilities: ['cli', 'maintenance', 'install', 'optional-deps'], keywords: ['features', 'optional', 'install', 'embeddings', 'sqlite', 'pty', 'webserver'], category: 'maintenance', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: [ 'aiwg features', 'optional features', 'install optional', 'enable embeddings', ], commandHint: { template: 'utility', argumentHint: '[status|info|install|remove] [name] [--json]', allowedTools: ['Read', 'Bash'], }, }, }; // Toolsmith Commands export const runtimeInfoCommand = { id: 'runtime-info', type: 'skill', name: 'Runtime Info', description: 'Display runtime environment, available tools, and capabilities', version: '1.0.0', capabilities: ['cli', 'toolsmith', 'discovery'], keywords: ['runtime', 'info', 'discovery', 'tools'], category: 'toolsmith', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['runtime info', 'show runtime', 'available tools', 'runtime environment'], commandHint: { template: 'utility', allowedTools: ['Read', 'Bash'], }, }, }; export const agentcardCommand = { id: 'agentcard', type: 'skill', name: 'AgentCard', description: 'Fetch and verify an agentic-sandbox AgentCard JWS signature', version: '1.0.0', capabilities: ['cli', 'a2a', 'security'], keywords: ['agentcard', 'a2a', 'jws', 'verify', 'sandbox'], category: 'toolsmith', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: [ 'verify agentcard', 'fetch agent card', 'verify a2a signature', 'check executor signature', ], commandHint: { template: 'utility', allowedTools: ['Read', 'Bash'], }, }, }; // Utility Commands export const prefillCardsCommand = { id: 'prefill-cards', type: 'skill', name: 'Prefill Cards', description: 'Auto-populate SDLC artifact metadata from team configuration', version: '1.0.0', capabilities: ['cli', 'sdlc', 'automation'], keywords: ['prefill', 'cards', 'sdlc', 'metadata'], category: 'utility', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['prefill cards', 'populate metadata', 'fill sdlc cards', 'auto-populate artifacts'], commandHint: { template: 'transformation', allowedTools: ['Read', 'Write'], }, }, }; export const contributeStartCommand = { id: 'contribute-start', type: 'skill', name: 'Contribute Start', description: 'Initialize contribution with branch, issue tracking, and DCO', version: '1.0.0', capabilities: ['cli', 'contribution', 'workflow'], keywords: ['contribute', 'contribution', 'workflow'], category: 'utility', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['contribute start', 'start contribution', 'new contribution', 'init contribution'], commandHint: { template: 'orchestration', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; export const validateMetadataCommand = { id: 'validate-metadata', type: 'skill', name: 'Validate Metadata', description: 'Validate extension metadata against schema requirements', version: '1.0.0', capabilities: ['cli', 'validation', 'metadata'], keywords: ['validate', 'metadata', 'quality'], category: 'utility', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['validate metadata', 'check metadata', 'validate extensions', 'metadata quality'], commandHint: { template: 'utility', allowedTools: ['Read'], }, }, }; export const skillLintCommand = { id: 'skill-lint', type: 'skill', name: 'Skill Lint', description: 'Score SKILL.md files against a quality rubric (schema, description, discoverability, body)', version: '1.0.0', capabilities: ['cli', 'validation', 'metadata', 'quality'], keywords: ['lint', 'quality', 'skill', 'rubric'], category: 'utility', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['skill lint', 'lint skills', 'score skills', 'skill quality'], commandHint: { template: 'utility', argumentHint: '<path> [--rubric strict|standard|lenient] [--json]', allowedTools: ['Read'], }, }, }; // Plugin Commands export const installPluginCommand = { id: 'install-plugin', type: 'skill', name: 'Install Plugin', description: 'Install Claude Code plugin', version: '1.0.0', capabilities: ['cli', 'plugin', 'install'], keywords: ['install', 'plugin', 'claude'], category: 'plugin', platforms: { claude: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['install plugin', 'add plugin', 'plugin install'], commandHint: { template: 'utility', argumentHint: '<name>', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; export const uninstallPluginCommand = { id: 'uninstall-plugin', type: 'skill', name: 'Uninstall Plugin', description: 'Uninstall Claude Code plugin', version: '1.0.0', capabilities: ['cli', 'plugin', 'uninstall'], keywords: ['uninstall', 'plugin', 'claude'], category: 'plugin', platforms: { claude: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['uninstall plugin', 'remove plugin', 'plugin uninstall'], commandHint: { template: 'utility', argumentHint: '<name>', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; export const pluginStatusCommand = { id: 'plugin-status', type: 'skill', name: 'Plugin Status', description: 'Show Claude Code plugin status', version: '1.0.0', capabilities: ['cli', 'plugin', 'status'], keywords: ['status', 'plugin', 'claude'], category: 'plugin', platforms: { claude: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['plugin status', 'show plugins', 'list plugins'], commandHint: { template: 'utility', allowedTools: ['Read'], }, }, }; export const packagePluginCommand = { id: 'package-plugin', type: 'skill', name: 'Package Plugin', description: 'Bundle plugin for Claude Code marketplace distribution', version: '1.0.0', capabilities: ['cli', 'plugin', 'packaging'], keywords: ['package', 'plugin', 'marketplace'], category: 'plugin', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['package plugin', 'bundle plugin', 'publish plugin'], commandHint: { template: 'orchestration', argumentHint: '<name>', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; export const packageAllPluginsCommand = { id: 'package-all-plugins', type: 'skill', name: 'Package All Plugins', description: 'Bundle all plugins for marketplace in batch operation', version: '1.0.0', capabilities: ['cli', 'plugin', 'packaging'], keywords: ['package', 'plugin', 'marketplace', 'all'], category: 'plugin', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['package all plugins', 'bundle all plugins', 'publish all plugins'], commandHint: { template: 'orchestration', allowedTools: ['Read', 'Write', 'Bash'], }, }, }; // Scaffolding Commands export const addAgentCommand = { id: 'add-agent', type: 'skill', name: 'Add Agent', description: 'Add agent to addon/framework', version: '1.0.0', capabilities: ['cli', 'scaffolding', 'agent'], keywords: ['add', 'agent', 'scaffold', 'create'], category: 'scaffolding', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['add agent', 'create agent', 'scaffold agent', 'new agent'], commandHint: { template: 'orchestration', argumentHint: '<name>', allowedTools: ['Read', 'Write'], }, }, }; export const addCommandCommand = { id: 'add-command', type: 'skill', name: 'Add Command', description: 'Add command to addon/framework', version: '1.0.0', capabilities: ['cli', 'scaffolding', 'command'], keywords: ['add', 'command', 'scaffold', 'create'], category: 'scaffolding', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['add command', 'create command', 'scaffold command', 'new command'], commandHint: { template: 'orchestration', argumentHint: '<name>', allowedTools: ['Read', 'Write'], }, }, }; export const addSkillCommand = { id: 'add-skill', type: 'skill', name: 'Add Skill', description: 'Add skill to addon/framework', version: '1.0.0', capabilities: ['cli', 'scaffolding', 'skill'], keywords: ['add', 'skill', 'scaffold', 'create'], category: 'scaffolding', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['add skill', 'create skill', 'scaffold skill', 'new skill'], commandHint: { template: 'orchestration', argumentHint: '<name>', allowedTools: ['Read', 'Write'], }, }, }; export const addBehaviorCommand = { id: 'add-behavior', type: 'skill', name: 'Add Behavior', description: 'Scaffold a new behavior with BEHAVIOR.md and scripts', version: '1.0.0', capabilities: ['cli', 'scaffolding', 'behavior'], keywords: ['add', 'behavior', 'scaffold', 'create', 'hooks', 'reactive'], category: 'scaffolding', platforms: { claude: 'full', openclaw: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['add behavior', 'create behavior', 'scaffold behavior', 'new behavior'], commandHint: { template: 'orchestration', argumentHint: '<name>', allowedTools: ['Read', 'Write'], }, }, }; export const addTemplateCommand = { id: 'add-template', type: 'skill', name: 'Add Template', description: 'Add template to addon/framework', version: '1.0.0', capabilities: ['cli', 'scaffolding', 'template'], keywords: ['add', 'template', 'scaffold', 'create'], category: 'scaffolding', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['add template', 'create template', 'scaffold template', 'new template'], commandHint: { template: 'orchestration', argumentHint: '<name>', allowedTools: ['Read', 'Write'], }, }, }; export const scaffoldAddonCommand = { id: 'scaffold-addon', type: 'skill', name: 'Scaffold Addon', description: 'Create new addon package', version: '1.0.0', capabilities: ['cli', 'scaffolding', 'addon'], keywords: ['scaffold', 'addon', 'create', 'package'], category: 'scaffolding', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['scaffold addon', 'create addon', 'new addon package'], commandHint: { template: 'orchestration', argumentHint: '<name>', allowedTools: ['Read', 'Write'], }, }, }; export const scaffoldExtensionCommand = { id: 'scaffold-extension', type: 'skill', name: 'Scaffold Extension', description: 'Create new extension package', version: '1.0.0', capabilities: ['cli', 'scaffolding', 'extension'], keywords: ['scaffold', 'extension', 'create', 'package'], category: 'scaffolding', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['scaffold extension', 'create extension', 'new extension package'], commandHint: { template: 'orchestration', argumentHint: '<name>', allowedTools: ['Read', 'Write'], }, }, }; export const scaffoldFrameworkCommand = { id: 'scaffold-framework', type: 'skill', name: 'Scaffold Framework', description: 'Create new framework package', version: '1.0.0', capabilities: ['cli', 'scaffolding', 'framework'], keywords: ['scaffold', 'framework', 'create', 'package'], category: 'scaffolding', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { type: 'skill', triggerPhrases: ['scaffold framework', 'create framework', 'new framework package'], commandHint: { template: 'orchestration', argumentHint: '<name>', allowedTools: ['Read', 'Write'], }, }, }; // Ralph Commands export const ralphCommand = { id: 'ralph', type: 'skill', name: 'Ralph', description: 'Start Ralph task execution loop', version: '1.0.0', capabilities: ['cli', 'ralph', 'orchestration'], keywords: ['ralph', 'loop', 'task', 'orchestration'], category: 'ralph', platforms: { claude: 'full', generic: 'full', }, deployment: { pathTemplate: '.{platform}/commands/{id}.md', core: true, }, metadata: { typ