Rename /feature command to /plan

- Update command matching from /feature to /plan in commands.rs
- Update help text, usage message, and example
- Update workspace memory references
- /feature is no longer recognized (completely removed)
This commit is contained in:
Dhanji R. Prasanna
2026-02-02 16:00:09 +11:00
parent 8705228fda
commit e893794029
2 changed files with 6 additions and 6 deletions

View File

@@ -261,7 +261,7 @@ Structured task planning with cognitive forcing - requires happy/negative/bounda
- `crates/g3-core/src/tool_definitions.rs` [263..330] - plan.read, plan.write, plan.approve definitions
- `crates/g3-core/src/tool_dispatch.rs` [36..38] - dispatch cases for plan tools
- `crates/g3-cli/src/commands.rs` [460..490] - `/feature` command starts Plan Mode
- `crates/g3-cli/src/commands.rs` [460..490] - `/plan` command starts Plan Mode
- `crates/g3-core/src/prompts.rs` [21..130] - SHARED_PLAN_SECTION replaces TODO section
**Plan Schema (YAML)**:
@@ -282,7 +282,7 @@ items:
notes: Implementation explanation # required when done
```
**Workflow**: `/feature <desc>` → agent drafts plan → user approves → agent implements → plan_verify() called when complete
**Workflow**: `/plan <desc>` → agent drafts plan → user approves → agent implements → plan_verify() called when complete
### Plan Mode Tool Names (IMPORTANT)
Tool names must use underscores, not dots (Anthropic API restriction: `^[a-zA-Z0-9_-]{1,128}$`).

View File

@@ -74,7 +74,7 @@ pub async fn handle_command<W: UiWriter>(
output.print(" /readme - Reload README.md and AGENTS.md from disk");
output.print(" /stats - Show detailed context and performance statistics");
output.print(" /run <file> - Read file and execute as prompt");
output.print(" /feature <description> - Start Plan Mode for a new feature");
output.print(" /plan <description> - Start Plan Mode for a new feature");
output.print(" /help - Show this help message");
output.print(" exit/quit - Exit the interactive session");
output.print("");
@@ -453,16 +453,16 @@ pub async fn handle_command<W: UiWriter>(
}
Ok(true)
}
cmd if cmd.starts_with("/feature") => {
cmd if cmd.starts_with("/plan") => {
let parts: Vec<&str> = cmd.splitn(2, ' ').collect();
if parts.len() < 2 || parts[1].trim().is_empty() {
output.print("Usage: /feature <description>");
output.print("Usage: /plan <description>");
output.print("Starts Plan Mode for a new feature. The agent will:");
output.print(" 1. Research and draft a Plan with checks (happy/negative/boundary)");
output.print(" 2. Ask clarifying questions if needed");
output.print(" 3. Request approval before coding");
output.print("");
output.print("Example: /feature Add CSV import for comic book metadata");
output.print("Example: /plan Add CSV import for comic book metadata");
} else {
let feature_description = parts[1].trim();