NAME

dashboard - thin command switchboard for Developer Dashboard

SYNOPSIS

dashboard help
dashboard init
dashboard update
dashboard doctor [--fix]
dashboard ps1 [--jobs N] [--cwd PATH] [--mode compact|extended] [--color]
dashboard paths
dashboard path list
dashboard path resolve <name>
dashboard path add <name> <path>
dashboard path del <name>
dashboard path locate <term...>
dashboard path project-root
dashboard of [--print] [--line N] [--editor CMD] <file|scope> [pattern...]
dashboard open-file [--print] [--line N] [--editor CMD] <file|scope> [pattern...]
dashboard ticket [ticket-ref]
dashboard jq [path] [file]
dashboard yq [path] [file]
dashboard tomq [path] [file]
dashboard propq [path] [file]
dashboard iniq [path] [file]
dashboard csvq [path] [file]
dashboard xmlq [path] [file]
dashboard encode < input.txt
dashboard decode < token.txt
dashboard indicator set <name> <label> <icon> <status>
dashboard indicator list
dashboard indicator refresh-core [cwd]
dashboard collector write-result <name> <exit_code>
dashboard collector status <name>
dashboard collector list
dashboard collector job <name>
dashboard collector output <name>
dashboard collector inspect <name>
dashboard collector log
dashboard collector run <name>
dashboard collector start <name>
dashboard collector stop <name>
dashboard collector restart <name>
dashboard skills install <git-url>
dashboard skills uninstall <repo-name>
dashboard skills update <repo-name>
dashboard skills list
dashboard skill <repo-name> <command> [args...]
dashboard config init
dashboard config show
dashboard auth add-user <username> <password>
dashboard auth list-users
dashboard auth remove-user <username>
dashboard page new [id] [title]
dashboard page save <id>
dashboard page list
dashboard page show <id>
dashboard page encode [id]
dashboard page decode [token]
dashboard page urls <id>
dashboard page render [id|file]
dashboard page source <id|token>
dashboard action run <page_id> <action_id>
dashboard docker compose [--addon NAME] [--mode NAME] [--service NAME] [--project DIR] [--dry-run] <compose-args...>
dashboard serve [logs [-f] [-n N]|workers <N>] [--host HOST] [--port PORT] [--workers N] [--foreground]
dashboard stop
dashboard restart [--host HOST] [--port PORT] [--workers N]
dashboard shell [bash|zsh|sh|ps|powershell|pwsh]
dashboard version
dashboard <custom-subcommand> [args...]

DESCRIPTION

The public dashboard entrypoint is intentionally kept thin.

It only:

  • bootstraps the repo lib path when running from a checkout

  • runs layered per-command hooks across DD-OOP-LAYERS

  • stages dashboard-managed built-in helpers under ~/.developer-dashboard/cli/dd/

  • resolves the effective command from the deepest child layer back to home

  • execs the resolved helper or custom command

The real built-in command implementations live outside this entrypoint, either in private staged helper scripts under share/private-cli/ or in reusable Perl modules loaded by those helpers.

PURPOSE

This is the one public executable users invoke. It bootstraps PERL5LIB when running from a checkout, runs layered command hooks across DD-OOP-LAYERS, stages dashboard-managed built-in helpers under ~/.developer-dashboard/cli/dd/, and then execs the final helper or custom command instead of owning the heavy implementation itself.

WHY IT EXISTS

It exists to keep the command surface stable while the implementation stays decomposed. The repo rule is that dashboard remains a switchboard, so this file owns dispatch, helper staging, and hook execution rather than data queries, SQL workspaces, page rendering, or other subsystem logic.

WHEN TO USE

Use this file when you are changing top-level command discovery, the order of command hooks, how built-in helpers are staged, or the deepest-to-home lookup rules for layered custom commands.

HOW TO USE

Users run dashboard <subcommand>. This script resolves whether that subcommand is a dashboard-managed helper or a user-layer command, primes the RESULT hook state, and then hands off with exec. If behavior belongs to a subsystem, move it into a module or private helper instead of expanding this file.

WHAT USES IT

It is used directly by end users, shell bootstraps, private staged helpers that re-enter the public command path, tests that execute dashboard commands, and release/integration smoke runs that verify the installed command surface.

EXAMPLES

Example 1:

dashboard paths

Exercise thin command dispatch through one lightweight built-in helper.

Example 2:

dashboard page source api-dashboard

Use the public entrypoint to reach a heavier staged helper without embedding that implementation here.

Example 3:

dashboard serve --foreground

Run the public command through its server bootstrap path while keeping logs in the foreground.

Example 4:

prove -lv t/30-dashboard-loader.t

Rerun the loader contract test after changing how this public switchboard stages or dispatches helpers.