rhdh
<cli_setup> Locate and set the CLI variable:
The CLI script is at scripts/rhdh relative to this SKILL.md file (not the working directory).
When you read this file, note its path and derive the script location:
- If SKILL.md is at
/path/to/skills/rhdh/SKILL.md - Then the CLI is at
/path/to/skills/rhdh/scripts/rhdh
RHDH="/path/to/skills/rhdh/scripts/rhdh" # Use the actual path
Get oriented (run first):
$RHDH
This shows environment status, discovered repos, and available tools. </cli_setup>
<essential_principles>
Contains critical gotchas (jq escaping, assignee format) that prevent common errors.
</essential_principles>
<context_scan> Run on invocation to understand current state:
$RHDH
This checks:
- Overlay repo location and status
- rhdh-local availability
- gh CLI authentication
- Container runtime (podman/docker)
If repos not found: Run $RHDH config init to auto-detect or configure paths.
</context_scan>
$RHDH
If needs_setup: true: Stop and run $RHDH doctor to fix setup issues.
Step 2: Identify Task Type
What would you like to do?
Overlay Repository Tasks
For working with the rhdh-plugin-export-overlays repository
- Onboard a new plugin — Add upstream plugin to Extensions Catalog
- Update plugin version — Bump to newer upstream commit/tag
- Fix build failure — Debug CI/publish issues
- Triage overlay PRs — Prioritize open PRs by criticality
- Analyze specific PR — Check assignment, compatibility, merge readiness
Plugin Creation Tasks
For creating new RHDH dynamic plugins from scratch
- Create plugin — Bootstrap, export, package, or wire a dynamic plugin (backend or frontend)
Local Testing Tasks
For testing plugins in a local RHDH instance using rhdh-local-setup
- Local testing — Enable/disable/test plugins in local RHDH
General Tasks
- Check environment — Run doctor, configure paths
- View/search activity — Review worklog, todos
Wait for response before proceeding.
| Condition | Action |
|---|---|
needs_setup: true in CLI output |
Run $RHDH doctor |
Always check this first.
Overlay Repository Routes
| Response | Skill |
|---|---|
| 1-5, "onboard", "update", "fix", "triage", "PR", "overlay", "plugin", "workspace" | Route to @overlay skill |
To route: Read ../overlay/SKILL.md and follow its intake process.
Plugin Creation Routes
| Response | Skill |
|---|---|
| 6, "backend plugin", "create backend", "frontend plugin", "create frontend", "export", "package", "OCI", "publish plugin", "wiring", "mount points", "routes", "entity tabs" | Route to @create-plugin skill |
To route: Read ../create-plugin/SKILL.md and follow its routing rules (backend, frontend, export, wiring sub-commands).
Local Testing Routes
| Response | Skill |
|---|---|
| 7, "local", "test locally", "enable plugin", "disable plugin", "local testing", "rhdh-local-setup" | Route to @rhdh-local skill |
To route: Read ../rhdh-local/SKILL.md and follow its intake process.
General Routes
| Response | Action |
|---|---|
| 8, "doctor", "setup", "config" | Use CLI commands below |
| 9, "log", "todo", "activity" | Use tracking commands below |
<cli_commands> Environment status (no args):
$RHDH
Shows overlay repo, rhdh-local, tools status, and next steps.
Full environment check:
$RHDH doctor
Configuration:
$RHDH config init # Create config with auto-detection
$RHDH config show # Show resolved paths
$RHDH config set overlay /path # Set rhdh-plugin-export-overlays location
$RHDH config set local /path # Set rhdh-local location
$RHDH config set rhdh /path # Set main rhdh repo location
$RHDH config set downstream /path # Set rhdh-downstream location
$RHDH config set cli /path # Set rhdh-cli location
$RHDH config set plugins /path # Set rhdh-plugins location
$RHDH config set operator /path # Set rhdh-operator location
$RHDH config set chart /path # Set rhdh-chart location
$RHDH config set catalog /path # Set rhdh-plugin-catalog location
Workspace operations:
$RHDH workspace list # List all plugin workspaces
$RHDH workspace status <name> # Show workspace details
</cli_commands>
<tracking_system>
Activity Tracking (Recommended)
The CLI includes worklog and todo tracking to maintain context across sessions. Use is recommended but not required.
Why Track?
- Cross-session memory — Pick up where you left off without re-explaining context
- Audit trail — "When did we onboard X?" / "What happened with PR #123?"
- Follow-up reminders — Don't lose track of blocked items waiting on external input
Worklog Commands
Append-only activity log stored in .rhdh/worklog.jsonl:
# Log activity with tags for searchability
$RHDH log add "Started onboard: aws-appsync" --tag onboard --tag aws-appsync
$RHDH log add "PR #1234 merged" --tag aws-appsync --tag pr
# View recent entries
$RHDH log show --limit 10
# Search past activity
$RHDH log search "aws-appsync"
$RHDH log search "onboard"
Todo Commands
Section-based markdown todos stored in .rhdh/TODO.md:
# Create todo when blocked
$RHDH todo add "Check license with legal" --context "aws-appsync"
$RHDH todo add "Follow up on stale PR #1234" --context "triage"
# List and manage
$RHDH todo list # All todos
$RHDH todo list --pending # Only open items
# Update progress
$RHDH todo note <slug> "Sent email to legal@redhat.com"
$RHDH todo done <slug>
# View raw file
$RHDH todo show
When to Track
Log these milestones:
- Starting/completing a workflow (onboard, update, triage)
- PR actions (opened, published, merged)
- Significant decisions or findings
Create todos for:
- Blocked items waiting on external response (legal, upstream, team)
- Post-merge follow-ups (verify in staging, remove workarounds)
- Items that span multiple sessions
Writing Effective Todos
Todos must be self-contained—a new session should understand the task without re-investigating.
| ❌ Too vague | ✅ Actionable |
|---|---|
| Fix #1875 version mismatch | Fix #1875 (lightspeed): bump 1.3.0→1.4.0 in workspace.yaml like #1903 |
| Add /ok-to-test to #1921 | Add /ok-to-test to #1921 (techdocs) — smoke tests ready, needs external trigger |
| Review #1906 SonarCloud | Review #1906 (catalog): SonarCloud blocked on coverage — check if test file missing |
Include: PR number, plugin name, specific action, and why it's needed.
</tracking_system>
<reference_index> RHDH Repos: references/rhdh-repos.md — repository map, ecosystem relationships, key paths GitHub CLI (PRs, CI, workflows): references/github-reference.md Version Matrix: references/versions.md — RHDH/Backstage version compatibility, create-app versions Slack Notifications: references/slack-notification.md — Slack ping templates, handle mapping, channel routing </reference_index>
<skills_index>
Specialized Skills
| Skill | Purpose | Path |
|---|---|---|
| overlay | Manage plugins in rhdh-plugin-export-overlays | ../overlay/SKILL.md |
| create-plugin | Create, export, package, and wire RHDH dynamic plugins | ../create-plugin/SKILL.md |
| rhdh-local | Enable/disable/test plugins in local RHDH | ../rhdh-local/SKILL.md |
Shared References
| Reference | Purpose | Path |
|---|---|---|
| rhdh-repos | Repository map, ecosystem relationships, key paths | references/rhdh-repos.md |
| versions | RHDH/Backstage version compatibility matrix | references/versions.md |
</skills_index>
More from redhat-developer/rhdh-skill
rhdh-jira
|
9skill-maker
Create new agent skills or consolidate existing skills following the Agent Skills open standard (agentskills.io). Interviews the user relentlessly about intent, scope, and edge cases before drafting. Covers SKILL.md structure, frontmatter, progressive disclosure, description optimization, script bundling, sub-command architecture, setup gates, context systems, and review. Use when the user wants to create a skill, write a skill, build a new skill, make a skill, draft a SKILL.md, or mentions "skill-maker". Also use when asked to package expertise, workflows, or domain knowledge into a reusable skill. Also use when asked to consolidate skills, merge skills, combine skills, reduce skill count, or refactor multiple skills into one.
7export-and-package
This skill should be used when the user asks to "export dynamic plugin", "package plugin as OCI", "create plugin container image", "publish plugin to registry", "build OCI artifact", "package plugin as tgz", "push plugin to quay.io", "create dynamic plugin archive", "bundle multiple plugins", "generate integrity hash", or mentions exporting, packaging, or publishing an existing Backstage plugin for RHDH deployment. This skill handles the export and packaging workflow after a plugin has been implemented.
1generate-frontend-wiring
This skill should be used when the user asks to "generate frontend wiring", "show frontend wiring", "create RHDH binding", "generate dynamic plugin config", "show plugin wiring for RHDH", "create app-config for frontend plugin", or wants to generate the RHDH dynamic plugin wiring configuration for an existing Backstage frontend plugin. The skill analyzes the plugin's source code and generates the appropriate configuration.
1create-backend-plugin
Bootstraps a new backend dynamic plugin for Red Hat Developer Hub (RHDH). Use when the user asks to "create RHDH backend plugin", "bootstrap backend dynamic plugin", "create backstage backend plugin for RHDH", "new backend plugin for Red Hat Developer Hub", "create dynamic backend plugin", "scaffold RHDH backend plugin", "new scaffolder action", "create catalog processor", or mentions creating a new backend plugin, backend module, or server-side functionality for Red Hat Developer Hub or RHDH. This skill is specifically for backend plugins - for frontend plugins, use the separate frontend plugin skill.
1