Files
cleveragents-core/features/core_cli_commands.feature
T
freemo 48cff5cfe0 refactor(cli): rename plan lifecycle-list and lifecycle-apply to match specification
Renames `plan lifecycle-list` to `plan list` and `plan lifecycle-apply` to `plan apply` to align with the specification's canonical command names. Removes legacy V2 plan commands that occupied those names.

- Renamed CLI command registrations from lifecycle-list/lifecycle-apply to list/apply
- Removed legacy V2 apply and list commands (~200 lines)
- Updated apply shortcut in main.py to delegate to v3 lifecycle
- Added defensive null check for plan existence in apply command
- Updated 63+ test, doc, and benchmark files for consistency

Closes #881

Co-authored-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Co-committed-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
2026-04-02 19:09:04 +00:00

127 lines
5.3 KiB
Gherkin

Feature: Core CLI Commands for Project, Context and Plan Management
As a developer
I want to use CleverAgents core CLI commands
So that I can manage projects, context, and plans through the command line
Background:
Given I have a minimal test environment
Scenario: CLI shows help with all command groups
When I run "cleveragents --help"
Then the exit code should be 0
And the output should contain "AI-powered development assistant"
And the output should contain "project"
And the output should contain "context"
And the output should contain "plan"
And the output should contain "init"
And the output should contain "tell"
And the output should contain "build"
And the output should contain "apply"
Scenario: Initialize a new project
Given I am in a temporary directory
When I run "cleveragents init test-project"
Then the exit code should be 0
And the output should contain "Project 'test-project' initialized successfully"
And the directory ".cleveragents" should exist
And the test file ".cleveragents/db.sqlite" should exist
And the test file ".cleveragents/config.yaml" should exist
And the test file ".cleveragents/current" should exist
And the file ".cleveragents/current" should contain "main"
Scenario: Cannot initialize project twice without force
Given I am in a temporary directory
And I have initialized a project "test-project"
When I run "cleveragents init another-project"
Then the exit code should be 1
And the output should contain "Project already initialized"
And the output should contain "--force"
Scenario: Force reinitialize a project
Given I am in a temporary directory
And I have initialized a project "test-project"
When I run "cleveragents init another-project --force"
Then the exit code should be 0
And the output should contain "Project 'another-project' initialized successfully"
Scenario: Project status command works
Given I am in a temporary directory
And I have initialized a project "test-project"
When I run "cleveragents project status"
Then the exit code should be 0
And the output should contain "Project: test-project"
And the output should contain "Plans: 1"
And the output should contain "Context Files: 0"
Scenario: Project status fails without project
Given I am in a temporary directory
When I run "cleveragents project status"
Then the exit code should be 1
And the output should contain "No project found"
Scenario: Context add command works with files
Given I am in a temporary directory
And I have initialized a project "test-project"
And I have created a plan with "Test plan"
And I have created a file "test.py" with content "print('hello')"
When I run "cleveragents context add test.py"
Then the exit code should be 0
And the output should contain "Added 1 file(s) to context"
And the output should contain "test.py"
Scenario: Context list shows added files
Given I am in a temporary directory
And I have initialized a project "test-project"
And I have created a plan with "Test plan"
And I have created a file "test.py" with content "print('hello')"
And I have added path "test.py" to context
When I run "cleveragents context list"
Then the exit code should be 0
And the output should contain "test.py"
And the output should contain "bytes"
Scenario: Context clear removes all files
Given I am in a temporary directory
And I have initialized a project "test-project"
And I have created a plan with "Test plan"
And I have created a file "test.py" with content "print('hello')"
And I have added path "test.py" to context
When I run "cleveragents context clear --yes"
Then the exit code should be 0
And the output should contain "Cleared all files from context"
Scenario: Plan tell creates a new plan
Given I am in a temporary directory
And I have initialized a project "test-project"
When I run "cleveragents tell 'Add error handling to the main function'"
Then the exit code should be 0
And the output should contain "Plan created"
And the output should contain "Add error handling"
Scenario: Plan build generates changes
Given I am in a temporary directory
And I have initialized a project "test-project"
And I have created a plan with "Add error handling"
When I run "cleveragents build"
Then the exit code should be 0
And the output should contain "Plan built successfully"
And the output should contain "Generated"
And the output should contain "change(s)"
Scenario: Plan current shows active plan
Given I am in a temporary directory
And I have initialized a project "test-project"
And I have created a plan with "Test plan"
When I run "cleveragents plan current"
Then the exit code should be 0
And the output should contain "Current Plan"
And the output should contain "Test plan"
Scenario: Shortcuts work for common commands
Given I am in a temporary directory
And I have initialized a project "test-project"
And I have created a plan with "Test plan"
And I have created a file "test.py" with content "print('hello')"
When I run "cleveragents context-load test.py"
Then the exit code should be 0
And the output should contain "Added 1 file(s) to context"