Prompt 08: Audit and Wire Up the Command System
- Source ID:
src-20260420-fa667858d414 - Kind:
code - Scope:
shared - Origin:
claude_code/prompts/08-command-system.md - Raw path:
sources/raw/prompt-08-audit-and-wire-up-the-command-system__src-20260420-fa667858d414.md - Status:
active
Tags
internal-docs rebuild-prompt
Content
Prompt 08: Audit and Wire Up the Command System
Context
You are working in /workspaces/claude-code. The CLI has ~50 slash commands (e.g., /commit, /review, /init, /config). These are registered in src/commands.ts and implemented in src/commands/.
Key files:
- src/commands.ts (~25K lines) — Command registry (getCommands())
- src/commands/ — Individual command implementations
- src/types/command.ts — Command type definition
Task
Part A: Understand the Command interface
Read src/types/command.ts and the top of src/commands.ts. Document:
1. The Command type (name, description, execute, args, etc.)
2. How commands are registered
3. How command execution is triggered (from the REPL? from CLI args?)
Part B: Audit the command registry
Read src/commands.ts fully. Create a complete inventory of all commands, organized by category:
Essential commands (needed for basic operation):
- /help — show help
- /config — view/edit configuration
- /init — initialize a project
- /commit — git commit
- /review — code review
Feature-gated commands (behind feature flags or USER_TYPE): - List which flag enables each
Potentially broken commands (reference missing imports or services): - List any that can't resolve their imports
Part C: Verify core commands compile
For the essential commands listed above, read their implementations and check: 1. All imports resolve 2. They don't depend on unavailable services 3. The function signatures match the Command type
Part D: Fix import issues
Similar to the tool system, commands may have:
- Feature-gated imports that need the bun:bundle shim
- Ant-only code paths
- Dynamic imports that need correct paths
Fix whatever is broken.
Part E: Handle "moved to plugin" commands
There's a file src/commands/createMovedToPluginCommand.ts. Read it — some commands have been migrated to the plugin system. These should gracefully tell the user the command has moved, not crash.
Part F: Create a command smoke test
Create scripts/test-commands.ts:
// scripts/test-commands.ts
// Verify all commands load without errors
// Usage: bun scripts/test-commands.ts
import './src/shims/preload.js'
async function main() {
const { getCommands } = await import('./src/commands.js')
const commands = getCommands(/* check signature */)
console.log(`Loaded ${commands.length} commands:\n`)
for (const cmd of commands) {
console.log(` /${cmd.name} — ${cmd.description || '(no description)'}`)
}
}
main().catch(err => {
console.error('Command loading failed:', err)
process.exit(1)
})
Verification
scripts/test-commands.tslists all available commands- Core commands (
/help,/config,/init,/commit) are present - No runtime crashes from missing imports
- Moved-to-plugin commands show a friendly message instead of crashing