NAME

Developer::Dashboard::SkillManager - manage installed dashboard skills

SYNOPSIS

use Developer::Dashboard::SkillManager;
my $manager = Developer::Dashboard::SkillManager->new();

my $result = $manager->install('git@github.com:user/skill-name.git');
my $list = $manager->list();
my $path = $manager->get_skill_path('skill-name');
my $update_result = $manager->update('skill-name');
my $uninstall_result = $manager->uninstall('skill-name');

DESCRIPTION

Manages the lifecycle of installed dashboard skills: - Install: Clone Git repositories as skills - Uninstall: Remove skills completely - Update: Pull latest changes from skill repositories - List: Show all installed skills - Resolve: Find skill paths and metadata

Skills are isolated under ~/.developer-dashboard/skills/<repo-name>/

PURPOSE

This module installs, updates, removes, and lists dashboard skills. It manages the on-disk skill root under ~/.developer-dashboard/skills/, clones or updates Git-backed skill repos, prepares the expected directory layout, and helps the rest of the runtime locate installed skills.

WHY IT EXISTS

It exists because skill lifecycle management is not the same as skill execution. The dashboard needs one module that owns where skills live, how they are installed or refreshed, and how command and bookmark dispatchers find them later.

WHEN TO USE

Use this file when changing skill install/update/uninstall behavior, the expected skill directory layout, dependency bootstrap rules for skills, or skill listing and lookup semantics.

HOW TO USE

Construct it with the active paths, then call the install/update/uninstall/list methods from the dashboard skills helper or from tests. Leave command execution and hook handling to Developer::Dashboard::SkillDispatcher.

WHAT USES IT

It is used by the dashboard skills command family, by the skill dispatcher, by release metadata that documents the isolated skill layout, and by skill lifecycle tests.

EXAMPLES

Example 1:

perl -Ilib -MDeveloper::Dashboard::SkillManager -e 1

Do a direct compile-and-load check against the module from a source checkout.

Example 2:

prove -lv t/19-skill-system.t t/20-skill-web-routes.t

Run the focused regression tests that most directly exercise this module's behavior.

Example 3:

HARNESS_PERL_SWITCHES=-MDevel::Cover prove -lr t

Recheck the module under the repository coverage gate rather than relying on a load-only probe.

Example 4:

prove -lr t

Put any module-level change back through the entire repository suite before release.