@startuml
skinparam packageStyle rectangle
skinparam shadowing false
skinparam linetype polyline


skinparam classAttributeIconSize 0

actor "Human Resource\nManager" as HRM
participant "SkillRegistrationUI" as UI
participant "SkillRegistrationController" as Controller
participant "SkillRepository" as Repository
participant "SkillValidator" as Validator
participant "UserSession" as Session
participant "Organization" as Org
participant "Skill" as SkillObj

HRM -> UI : requests to register skills
activate UI

UI -> Controller : registerSkill(skillName)
activate Controller

Controller -> Validator : validateSkill(SkillObj)
activate Validator
Validator --> Controller : validation result
deactivate Validator

alt if skill is valid
    Controller -> Repository : saveSkill(SkillObj)
    activate Repository
    Repository --> Controller : confirmation of save
    deactivate Repository

    Controller -> UI : displaySuccessMessage()
    UI --> HRM : show success message
else skill is not valid
    Controller -> UI : displayFailureMessage()
    UI --> HRM : show failure message
end

deactivate Controller
deactivate UI
@enduml
