Feature: Automation Profile CLI commands As a developer I want to manage automation profiles via CLI commands So that I can control plan execution autonomy levels Background: Given an automation profile CLI runner with mocks # Add command tests Scenario: Add profile via config file Given a valid automation profile config YAML file When I run automation-profile add with --config pointing to the YAML file Then the automation-profile add should succeed And the automation-profile output should contain "acme/strict" @tdd_issue @tdd_issue_6345 Scenario: Add profile JSON output uses flat schema Given a valid automation profile config YAML file When I run automation-profile add with --config pointing to the YAML file and --format json Then the automation-profile add should succeed And the automation-profile add json output matches the flat schema @tdd_issue @tdd_issue_6345 Scenario: Add profile YAML output uses flat schema Given a valid automation profile config YAML file When I run automation-profile add with --config pointing to the YAML file and --format yaml Then the automation-profile add should succeed And the automation-profile add yaml output matches the flat schema @tdd_issue @tdd_issue_6345 Scenario: Add profile plain output includes created timestamp Given a valid automation profile config YAML file When I run automation-profile add with --config pointing to the YAML file and --format plain Then the automation-profile add should succeed And the automation-profile output should contain "Profile Registered" And the automation-profile output should contain "Created:" And the automation-profile output should contain "require_checkpoints: true" Scenario: Add profile with --update for existing custom profile Given a valid automation profile config YAML file And the custom profile "acme/strict" already exists When I run automation-profile add with --config and --update Then the automation-profile add should succeed And the automation-profile output should contain "Updated" Scenario: Add profile with --update when profile does not exist warns and creates Given a valid automation profile config YAML file When I run automation-profile add with --config and --update Then the automation-profile add should succeed And the automation-profile output should contain "Warning" And the automation-profile output should contain "Profile Added" Scenario: Add profile conflict without --update Given a valid automation profile config YAML file And the custom profile "acme/strict" already exists When I run automation-profile add with --config without --update Then the automation-profile command should abort And the automation-profile output should contain "Conflict" Scenario: Add profile with missing config file fails When I run automation-profile add with --config pointing to a missing file Then the automation-profile command should abort Scenario: Add profile with invalid YAML fails Given an invalid YAML automation profile config file When I run automation-profile add with --config pointing to the invalid YAML file Then the automation-profile command should abort Scenario: Add profile with invalid name fails Given an automation profile config YAML file with invalid name When I run automation-profile add with --config pointing to the invalid name YAML file Then the automation-profile command should abort Scenario: Add profile with invalid threshold fails Given an automation profile config YAML file with invalid threshold When I run automation-profile add with --config pointing to the invalid threshold YAML file Then the automation-profile command should abort Scenario: Add profile with legacy threshold keys fails Given an automation profile config YAML file with legacy threshold keys When I run automation-profile add with --config pointing to the legacy threshold YAML file Then the automation-profile command should abort And the automation-profile output should contain "auto_strategize" Scenario: Add profile cannot overwrite built-in Given an automation profile config YAML file with built-in name "manual" When I run automation-profile add with --config pointing to the built-in name YAML file Then the automation-profile command should abort And the automation-profile output should contain "built-in" Scenario: Add profile with unsupported schema version Given an automation profile config YAML file with schema_version "2.0" When I run automation-profile add with --config pointing to the unsupported schema YAML file Then the automation-profile command should abort And the automation-profile output should contain "schema_version" # List command tests Scenario: List profiles shows built-in profiles When I run automation-profile list Then the automation-profile list should succeed And the automation-profile output should contain "manual" And the automation-profile output should contain "auto" Scenario: List profiles with namespace filter Given a custom profile "acme/strict" has been added When I run automation-profile list with namespace filter "acme" Then the automation-profile list should succeed And the automation-profile output should contain "acme/strict" Scenario: List profiles with regex filter When I run automation-profile list with regex "caut.*" Then the automation-profile list should succeed And the automation-profile output should contain "cautious" Scenario: List profiles with invalid regex When I run automation-profile list with regex "[invalid" Then the automation-profile command should abort Scenario: List profiles with --format json output snapshot When I run automation-profile list with --format json Then the automation-profile list should succeed And the automation-profile json output should contain "profiles" And the automation-profile json output should contain "summary" And the automation-profile json output should contain "built_in" And the automation-profile json output should contain "select_tool" @tdd_issue @tdd_issue_4235 @tdd_expected_fail Scenario: List profiles JSON output has spec-required profiles wrapper with summary When I run automation-profile list with --format json Then the automation-profile list should succeed And the automation-profile list json output has profiles wrapper with summary Scenario: List profiles YAML output has spec-required profiles wrapper When I run automation-profile list with --format yaml Then the automation-profile list should succeed And the automation-profile yaml output should contain "profiles:" And the automation-profile yaml output should contain "summary:" And the automation-profile yaml output should contain "built_in:" And the automation-profile yaml output should contain "select_tool:" Scenario: List profiles rich output has Auto-Apply column header When I run automation-profile list Then the automation-profile list should succeed And the automation-profile output should contain "Auto-Ap" Scenario: List profiles rich output has Summary panel When I run automation-profile list Then the automation-profile list should succeed And the automation-profile output should contain "Summary" And the automation-profile output should contain "Built-in:" Scenario: List profiles with no matches When I run automation-profile list with namespace filter "nonexistent" Then the automation-profile output should contain "No profiles found" # Show command tests Scenario: Show built-in profile details When I run automation-profile show "manual" Then the automation-profile show should succeed And the automation-profile output should contain "manual" And the automation-profile output should contain "1.0" Scenario: Show profile not found When I run automation-profile show "nonexistent/profile" Then the automation-profile command should abort And the automation-profile output should contain "not found" Scenario: Show profile with --format yaml output snapshot When I run automation-profile show "manual" with --format yaml Then the automation-profile show should succeed And the automation-profile yaml output should contain "name: manual" And the automation-profile yaml output should contain "decompose_task" Scenario: Show profile with --format json When I run automation-profile show "manual" with --format json Then the automation-profile show should succeed And the automation-profile json output should contain "name" Scenario: Show profile with --format plain When I run automation-profile show "manual" with --format plain Then the automation-profile show should succeed And the automation-profile output should contain "name: manual" Scenario: Show profile with --format table When I run automation-profile show "manual" with --format table Then the automation-profile show should succeed # Remove command tests Scenario: Remove custom profile with confirmation Given a custom profile "acme/strict" has been added When I run automation-profile remove "acme/strict" with --yes Then the automation-profile remove should succeed And the automation-profile output should contain "Profile Removed" And the automation-profile output should contain "Name:" And the automation-profile output should contain "OK" Scenario: Remove custom profile shows Profile Removed panel Given a custom profile "acme/panel-test" has been added When I run automation-profile remove "acme/panel-test" with --yes Then the automation-profile remove should succeed And the automation-profile output should contain "Profile Removed" And the automation-profile output should contain "acme/panel-test" And the automation-profile output should contain "OK" Scenario: Remove built-in profile fails When I run automation-profile remove "manual" with --yes Then the automation-profile command should abort And the automation-profile output should contain "built-in" Scenario: Remove nonexistent profile fails When I run automation-profile remove "nonexistent/profile" with --yes Then the automation-profile command should abort And the automation-profile output should contain "not found" Scenario: Remove profile with --format json Given a custom profile "acme/toremove" has been added When I run automation-profile remove "acme/toremove" with --yes and --format json Then the automation-profile remove should succeed And the automation-profile json output should contain "removed" # Legacy flag removal tests Scenario: Legacy --automation-level flag is rejected on plan use When I invoke plan use with --automation-level "manual" Then the plan output should contain "--automation-level"