Feature: Unified API Naming Conventions
  As a developer
  I want consistent API naming conventions across all service classes
  So that the API is predictable and easy to learn

  Background:
    Given a CleverAgents project is initialized
    And the project service is available
    And the plan service is available

  Scenario: ProjectService uses create_project method
    When I create a project using create_project method
    Then the project is successfully created
    And the project is stored in the database

  Scenario: ProjectService.create_project is the primary method
    When I call ProjectService.create_project
    Then it should create a new project
    And the method should have full type annotations

  Scenario: PlanService uses get_plan_by_name method
    Given a project with a plan named "test-plan"
    When I retrieve the plan using get_plan_by_name method
    Then the plan is successfully retrieved
    And the plan name matches "test-plan"

  Scenario: PlanService.get_plan_by_name replaces switch_to_plan
    When I call PlanService.get_plan_by_name with a plan name
    Then it should return the plan with that name
    And the method should have full type annotations

  Scenario: Consistent listing methods across services
    When I list projects using list_projects
    And I list plans using list_plans
    Then both methods follow the same naming pattern
    And both methods return lists of their respective entities

  Scenario: Consistent current item methods across services
    When I get the current project using get_current_project
    And I get the current plan using get_current_plan
    Then both current item methods follow the same naming pattern
    And both methods return the current entity or None

  Scenario: All service methods have full type annotations
    When I inspect all public methods in service classes
    Then all methods should have complete type annotations
    And no type: ignore comments should be present
    And all methods should pass pyright type checking
