showroom:create-demo
This skill should be used when the user asks to "create a demo module", "write a Know/Show demo", "build a presenter demo", "create a Showroom demo", "write a facilitator guide", "build a demo script", or "create a presenter-led demo for RHDP".
Best use case
showroom:create-demo is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
This skill should be used when the user asks to "create a demo module", "write a Know/Show demo", "build a presenter demo", "create a Showroom demo", "write a facilitator guide", "build a demo script", or "create a presenter-led demo for RHDP".
Teams using showroom:create-demo should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/showroom-create-demo/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How showroom:create-demo Compares
| Feature / Agent | showroom:create-demo | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
This skill should be used when the user asks to "create a demo module", "write a Know/Show demo", "build a presenter demo", "create a Showroom demo", "write a facilitator guide", "build a demo script", or "create a presenter-led demo for RHDP".
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
---
context: main
model: claude-sonnet-4-6
---
# Demo Module Generator
Orchestrates agents to create Red Hat Showroom presenter-led demo content using the Know/Show structure. Two modes: interactive (human) and headless (Publishing House via ph_payload).
## Architecture
This skill is an orchestrator. Generation and review are delegated to agents:
- `showroom:file-generator` (Sonnet) — generates one AsciiDoc file, runs in parallel for new demos
- `showroom:module-reviewer` (Sonnet) — quality check on generated files
The orchestrator handles: argument parsing, repo detection, planning, agent spawning, nav merge, delivery.
## Know/Show Structure
Demos separate what presenters need to **understand** from what they need to **do**:
- **Know sections**: Business context, customer pain points, value propositions
- **Show sections**: Step-by-step presenter instructions, what to click/run, expected outcomes
See `@showroom/skills/create-demo/references/content-rules.md` for detailed Know/Show patterns.
See `@showroom/docs/SKILL-COMMON-RULES.md` for AsciiDoc rules, version pinning, image conventions.
---
## ph_payload — Headless Mode (Publishing House)
If `ph_payload` is present, skip ALL interactive questions and run headless. Return structured JSON.
```yaml
ph_payload:
target_dir: content/modules/ROOT/pages/
mode: new | continue
previous_module: 03-module-01-pipelines.adoc # continue mode only
spec:
demo_name: OpenShift Pipelines Live Demo
audience: Platform Engineers, Architects
business_scenario: ACME Corp needs to modernize their CI/CD pipeline
key_messages: [Speed up delivery, Reduce toil, Enterprise-grade reliability]
duration: 45min
module_outline: |
Module 1: Pipeline overview (~15 min)
Module 2: Live pipeline run (~20 min)
Module 3: Monitoring and insights (~10 min)
env:
ocp_version: "4.18"
attributes: {user: user1, password: openshift}
```
Headless return (JSON only):
```json
{
"files_created": ["index.adoc", "01-overview.adoc", "02-details.adoc", "03-module-01-pipelines.adoc"],
"nav_updated": true,
"quality": {"critical": 0, "high": 0, "warnings": 1},
"warnings": ["No customer ROI metrics provided — add in Know section"]
}
```
---
## Interactive Mode
### Phase 0 — Parse Arguments
```bash
/create-demo # interactive
/create-demo <directory> # specify target directory
/create-demo <directory> --new # new demo
/create-demo <directory> --continue <module> # continue from module
```
Validate directory exists. If empty: tell user to clone nookbag template:
```
git clone https://github.com/rhpds/showroom_template_nookbag <repo-name>
```
---
### Phase 1 — Detect Mode
If not set by arguments:
```
Are you:
1. Starting a NEW demo (creates index + overview + details + first module)
2. Adding a module to an EXISTING demo
```
---
### Phase 2 — Planning Form (ALL questions at once)
**For NEW demo — ask as one grouped form:**
```
Let's plan your demo. Answer what you know — skip anything you're unsure about:
Demo name:
Target audience (e.g. Platform Engineers, Solution Architects, CxOs):
Primary business challenge being solved:
Key messages (3-4 points you want the audience to leave with):
Duration (e.g. 20min, 45min, 1hr):
Module breakdown (how many modules, what each demonstrates):
Customer story or ROI metrics to reference (or leave blank):
Competitive angle (what makes this stand out vs alternatives):
OpenShift version (or leave blank for {ocp_version} placeholder):
Access type (admin / multi-user):
UserInfo variables (paste from demo.redhat.com → My services → Details → Advanced settings):
Leave blank to use placeholders {user}, {password}, {openshift_console_url}
Reference materials (URLs, docs, competitive briefs — leave blank to use templates):
Writing style (optional — skip for standard Red Hat style):
Describe: "executive-friendly, outcome-focused, analogies over jargon"
OR paste 1-3 paragraphs of your own writing as an example
OR give a file path to an existing demo module you wrote
Saved profile? Point to: ~/.claude/context/my-writing-style.md
```
Confirm plan in one summary:
```
📋 Demo plan confirmed:
Demo: [name] | [audience] | [duration]
Modules: [breakdown]
Key messages: [list]
Generating files... (running in parallel)
```
**For CONTINUE mode:**
```
Which module are you adding? (title + what you'll demonstrate)
Reference materials for this module? (URLs or blank)
```
---
### Phase 2.5 — Showroom Setup (NEW demo only)
Ask Q0–Q3 from `@showroom/skills/create-demo/references/showroom-scaffold.md`:
- Q0: OCP or VM?
- Q1: Which tabs/consoles?
- Q2: Which Red Hat theme?
- Q3: Planning E2E automation? (optional — creates buttons.js + runtime-automation/ if yes)
Create/update `site.yml` and `ui-config.yml` in repo root.
---
### Phase 3 — Spawn File Generator Agents (parallel)
Build `FULL_SPEC` JSON from planning answers. Set `CONTENT_TYPE: demo`.
**NEW demo — spawn all files simultaneously:**
```
Task tool:
subagent_type: showroom:file-generator
prompt: |
TARGET_FILE: <repo_path>/content/modules/ROOT/pages/index.adoc
FILE_TYPE: index
FULL_SPEC: <FULL_SPEC JSON>
LAB_TYPE: <ocp|rhel|vm|ai>
CONTENT_TYPE: demo
REPO_PATH: <absolute repo path>
Task tool:
subagent_type: showroom:file-generator
prompt: |
TARGET_FILE: <repo_path>/content/modules/ROOT/pages/01-overview.adoc
FILE_TYPE: overview
CONTENT_TYPE: demo
FULL_SPEC: <FULL_SPEC JSON>
...
Task tool:
subagent_type: showroom:file-generator
prompt: |
TARGET_FILE: <repo_path>/content/modules/ROOT/pages/02-details.adoc
FILE_TYPE: details
CONTENT_TYPE: demo
FULL_SPEC: <FULL_SPEC JSON>
...
Task tool:
subagent_type: showroom:file-generator
prompt: |
TARGET_FILE: <repo_path>/content/modules/ROOT/pages/03-module-01-<slug>.adoc
FILE_TYPE: module
CONTENT_TYPE: demo
FULL_SPEC: <FULL_SPEC JSON>
...
```
All four run concurrently.
**CONTINUE mode — single agent:**
```
Task tool:
subagent_type: showroom:file-generator
prompt: |
TARGET_FILE: <next-module path>
FILE_TYPE: module
CONTENT_TYPE: demo
PREVIOUS_MODULE: <path to previous .adoc>
FULL_SPEC: <FULL_SPEC JSON>
REPO_PATH: <absolute repo path>
```
---
### Phase 4 — Quality Check
Spawn `showroom:module-reviewer` on each generated file with `CONTENT_TYPE: demo`:
```
Task tool:
subagent_type: showroom:module-reviewer
prompt: |
MODULE_FILE: <path>
CONTENT_TYPE: demo
LAB_TYPE: <ocp|rhel|vm|ai>
SHARED_CONTEXT: <JSON>
REPO_PATH: <absolute repo path>
is_first_module: <true if overview>
is_conclusion: false
```
Fix any Critical or High issues before delivering.
---
### Phase 5 — Update Navigation
Merge `nav_entry` values from file-generator outputs. Update `content/modules/ROOT/nav.adoc`.
---
### Phase 6 — Deliver
**Human mode:**
```
✅ Files created:
index.adoc
01-overview.adoc
02-details.adoc
03-module-01-<slug>.adoc
✅ nav.adoc updated
Quality: 0 Critical, 0 High, 1 Warning
- W1: No customer ROI metrics — add in Know section when available
Next: Add more modules with /create-demo --continue, or verify with /verify-content
```
**Headless mode:** return JSON from ph_payload schema.
---
### Phase 7 — Conclusion Module
When all modules complete:
```
Task tool:
subagent_type: showroom:file-generator
prompt: |
FILE_TYPE: conclusion
CONTENT_TYPE: demo
FULL_SPEC: <FULL_SPEC JSON with all module summaries>
...
```
See `@showroom/skills/create-demo/references/conclusion-template.md` for demo conclusion structure (ROI recap, call-to-action, presenter action items, Q&A guidance).
---
## Related Skills
- `/showroom:verify-content` — full quality review after content is created
- `/showroom:create-lab` — hands-on workshop content
- `/showroom:blog-generate` — transform demo to blog postRelated Skills
showroom:verify-content
This skill should be used when the user asks to "verify my workshop content", "review my lab module", "check my Showroom content", "validate my AsciiDoc module", "quality check my demo", "review my workshop for Red Hat standards", or "run a content review on my lab".
showroom:create-lab
This skill should be used when the user asks to "create a lab module", "write a workshop module", "build a Showroom lab", "convert docs to a lab", "write a hands-on exercise", "create an AsciiDoc module", or "turn this documentation into a lab exercise".
showroom:blog-generate
This skill should be used when the user asks to "turn this lab into a blog post", "write a blog post from this module", "generate a blog from my Showroom content", "convert my workshop to a blog", "write a Red Hat Developer blog post", or "create a blog post from my demo".
health:deployment-validator
Infrastructure Health Checker — use this when you need to validate that a workload or service DEPLOYED SUCCESSFULLY (pods running, routes accessible, dependencies ready). This is NOT for student E2E lab testing. For student exercise validation (solve/validate buttons), use /ftl:rhdp-lab-validator instead. Triggers on: 'create a validation role', 'build health checks', 'add deployment validation', 'create post-deployment checks', 'validate my deployment', 'check if my workload is healthy'.
agnosticv:validator
This skill should be used when the user asks to "validate my catalog", "check my AgnosticV config", "review common.yaml", "validate my RHDP catalog", "check for errors in my catalog", "lint my AgnosticV files", or "verify my catalog before submitting".
agnosticv:catalog-builder
This skill should be used when the user asks to "create a catalog", "build a common.yaml", "add a new RHDP lab", "set up a new catalog item", "create an AgnosticV catalog", "build a dev.yaml", "add a catalog entry", or "create a new lab catalog for RHDP".
sandbox-cli:sandbox-setup
This skill should be used when the user asks to "install sandbox-cli", "setup sandbox", "configure sandbox-cli", "get sandbox-cli working", "download sandbox-cli", or "I don't have sandbox-cli installed".
sandbox-cli:cluster-rotate
This skill should be used when the user asks to "rotate a cluster", "replace a cluster", "swap clusters", "offboard old and onboard new cluster", "cluster rotation", "replace an old cluster with a new one", or "refresh cluster".
sandbox-cli:cluster-onboard
This skill should be used when the user asks to "onboard a cluster", "add a cluster to sandbox", "register a cluster", "onboard OCP cluster", "sandbox onboard", or "add a new shared cluster".
sandbox-cli:cluster-offboard
This skill should be used when the user asks to "offboard a cluster", "remove a cluster from sandbox", "decommission a cluster", "sandbox offboard", "take a cluster offline", or "remove a shared cluster".
sandbox-cli:cluster-list
This skill should be used when the user asks to "list clusters", "show all clusters", "list sandbox clusters", "show registered clusters", "what clusters are available", or "cluster list".
sandbox-cli:cluster-details
This skill should be used when the user asks to "show cluster details", "get cluster info", "describe cluster", "cluster details", "inspect cluster", or "show cluster configuration".