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.