NAME
Developer::Dashboard::SKILLS - shipped skill authoring reference for Developer Dashboard
SYNOPSIS
# Read the long-form guide in the repository root
perldoc Developer::Dashboard::SKILLS
Skill lifecycle:
dashboard skills install git@github.com:user/example-skill.git
dashboard skills update example-skill
dashboard skills list
dashboard skill example-skill hello arg1 arg2
dashboard skills uninstall example-skill
DESCRIPTION
This module is documentation-first. It exists to ship a human-readable skill authoring reference with the distribution.
For the long Markdown guide, see SKILL.md.
Use a skill when you want a Git-backed package that can ship:
isolated CLI commands
skill-local hook files
bookmarks rendered from
/skill/<repo-name>/bookmarks/<id>an isolated config, state, logs, and local dependency root
QUICK START
Create a Git repository with at least:
example-skill/
├── cli/
│ └── hello
├── config/
│ └── config.json
└── dashboards/
└── welcome
Install it:
dashboard skills install file:///absolute/path/to/example-skill
Run its command:
dashboard skill example-skill hello
Open its bookmark:
/skill/example-skill/bookmarks/welcome
LAYOUT
Installed skills live under ~/.developer-dashboard/skills/<repo-name>/.
The prepared layout is:
- cli/
-
Executable skill commands. These are run through
dashboard skill <repo-name> <command>and are not installed into the system PATH. - cli/<command>.d/
-
Executable hook files for a command. They run in sorted order before the main command. Their results are serialized into the
RESULTenvironment variable. - config/config.json
-
Skill-owned JSON config. Developer Dashboard guarantees the file exists but does not impose a rich schema.
- config/docker/
-
Reserved root for skill-local Docker or Compose files. The dispatcher exposes this path through
DEVELOPER_DASHBOARD_SKILL_DOCKER_ROOT. - dashboards/
-
Bookmark instruction files shipped by the skill.
- state/
-
Persistent skill-owned state.
- logs/
-
Persistent skill-owned logs.
- local/
-
Isolated local dependency root.
- cpanfile
-
Optional Perl dependency declaration. When present, Developer Dashboard runs
cpanm -L local --installdeps <skill-root>.
SKILL COMMANDS AND HOOKS
Skill commands are file-based commands. Create runnable files such as:
cli/report
cli/report.pl
cli/report.sh
cli/report.ps1
Do not rely on a directory-backed run pattern for skill commands. That pattern belongs to dashboard-wide custom CLI commands under ~/.developer-dashboard/cli/<command>/run or ./.developer-dashboard/cli/<command>/run.
Hook files live under cli/<command>.d/ and:
must be executable to run
run in sorted filename order
have their
stdout,stderr, and exit codes captured intoRESULTdo not automatically prevent the main command from running
SKILL ENVIRONMENT
Skill hooks and commands currently receive these environment variables:
DEVELOPER_DASHBOARD_SKILL_NAMEDEVELOPER_DASHBOARD_SKILL_ROOTDEVELOPER_DASHBOARD_SKILL_COMMANDDEVELOPER_DASHBOARD_SKILL_CLI_ROOTDEVELOPER_DASHBOARD_SKILL_CONFIG_ROOTDEVELOPER_DASHBOARD_SKILL_DOCKER_ROOTDEVELOPER_DASHBOARD_SKILL_STATE_ROOTDEVELOPER_DASHBOARD_SKILL_LOGS_ROOTDEVELOPER_DASHBOARD_SKILL_LOCAL_ROOTRESULTPERL5LIB
If the skill has installed local Perl dependencies, PERL5LIB is prefixed with local/lib/perl5.
BOOKMARKS
Skill bookmark files live under dashboards/.
Current route surface:
list bookmarks:
/skill/<repo-name>/bookmarksrender bookmark:
/skill/<repo-name>/bookmarks/<id>
Examples:
/skill/example-skill/bookmarks/welcome
/skill/example-skill/bookmarks/nav/help.tt
Important current behavior:
the list route only lists top-level files
nested bookmark files can still be rendered directly when the path is known
the skill route is a render surface, not a browser edit/source surface
BOOKMARK LANGUAGE
Bookmark files use the original separator-line syntax with directives such as:
TITLE:ICON:BOOKMARK:NOTE:STASH:HTML:CODE1:and otherCODE*blocks
Rules that matter:
TITLE:sets the browser title and is exposed to templates astitleEarlier
CODE*blocks run before final template renderingReturned hashes merge into stash
Printed
STDOUTbecomes visible runtime outputSTDERRbecomes visible error output---can also act as a section separator
BOOKMARK HELPERS
The bookmark bootstrap exposes:
fetch_value(url, target, options, formatter)stream_value(url, target, options, formatter)stream_data(url, target, options, formatter)
Bookmark pages can also use the built-in /js/jquery.js compatibility shim for $, $(document).ready(...), and $.ajax(...).
For normal saved runtime bookmarks, Ajax(file => 'name', ...) can create stable saved Ajax endpoints. That capability is tied to the saved runtime bookmark path. Skill bookmarks render through the skill route surface, so do not assume stable saved /ajax/<file> handlers there unless you have tested that path explicitly.
NAV AND DASHBOARD-WIDE CLI
Normal runtime bookmarks support shared nav/*.tt fragments above non-nav saved pages. Skill bookmarks can still render files such as dashboards/nav/help.tt directly through /skill/<repo-name>/bookmarks/nav/help.tt, but the shared nav auto-insert behavior belongs to the saved runtime bookmark path.
Dashboard-wide custom CLI hooks are separate from skill hooks. They live under ./.developer-dashboard/cli/<command>.d or ~/.developer-dashboard/cli/<command>.d and are used for normal dashboard <command> commands. They can also use directory-backed run commands, which skill commands do not currently use.
FAQ
Do I need every folder?
No. Use the parts your skill actually needs.
Can a skill expose browser pages?
Yes, through dashboards/ and the /skill/.../bookmarks/... route.
Can I use isolated Perl dependencies?
Yes. Ship a cpanfile. Dependencies install into local/.
Where is the long-form guide?
See SKILL.md.
SEE ALSO
SKILL.md, Developer::Dashboard, Developer::Dashboard::SkillManager, Developer::Dashboard::SkillDispatcher
PURPOSE
Perl module in the Developer Dashboard codebase. This file ships the public POD guide for skill authors working with Developer Dashboard. Open this file when you need the implementation, regression coverage, or runtime entrypoint for that responsibility rather than guessing which part of the tree owns it.
WHY IT EXISTS
It exists to keep this responsibility in reusable Perl code instead of hiding it in the thin dashboard switchboard, bookmark text, or duplicated helper scripts. That separation makes the runtime easier to test, safer to change, and easier for contributors to navigate.
WHEN TO USE
Use this file when you are changing the underlying runtime behaviour it owns, when you need to call its routines from another part of the project, or when a failing test points at this module as the real owner of the bug.
HOW TO USE
Load Developer::Dashboard::SKILLS from Perl code under lib/ or from a focused test, then use the public routines documented in the inline function comments and existing SYNOPSIS/METHODS sections. This file is not a standalone executable.
WHAT USES IT
This file is used by whichever runtime path owns this responsibility: the public dashboard entrypoint, staged private helper scripts under share/private-cli/, the web runtime, update flows, and the focused regression tests under t/.
EXAMPLES
perl -Ilib -MDeveloper::Dashboard::SKILLS -e 'print qq{loaded\n}'
That example is only a quick load check. For real usage, follow the public routines already described in the inline code comments and any existing SYNOPSIS section.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 65:
Non-ASCII character seen before =encoding in '├──'. Assuming UTF-8